Cod sursa(job #1385645)

Utilizator pl4y0nHodorogea Alexandru pl4y0n Data 12 martie 2015 10:17:43
Problema Iv Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.46 kb
/*#include <iostream>
#include <fstream>

using namespace std;

char s1[51],s2[51];
int a[51][51];

int main()
{
    ifstream in("iv.in");
    ofstream out("iv.out");
    in>>s1>>s2;

    return 0;
}*/

#include <iostream>
#include <fstream>
#include <cstring>

using namespace std;

char s1[51],s2[51];
int st[52],nrpal;

bool palindrom(char s[102])
{
    for(int i=0;i<strlen(s)/2;i++)
    {
        if(s[i]!=s[strlen(s)-i-1])
        {
            //cout<<"!pal";
            return 0;
        }
    }
    //cout<<"pal";
    nrpal++;
    return 1;
}


void afis()
{
    int k=0;
    int j=0;
    int l=0;
    char s[102];
    for(int i=1; i<=strlen(s1)+strlen(s2); i++)
    {
        if(st[k]==i)
        {
            s[l]=s1[k];
            k++;l++;
        }
        else
        {
            s[l]=s2[j];
            j++;l++;
        }
    }
    s[l]=0;
    palindrom(s);
    //cout<<" : "<<s<<endl;

}

void bkt(int p)
{
    int n=strlen(s1)+strlen(s2);
    for (int val=st[p-1]+1; val<=n; val++)
    {
        st[p]=val;
        if(p==strlen(s1)-1)
            afis();
        else
            bkt(p+1);
    }
}

int main()
{
    ifstream in("iv.in");
    ofstream out("iv.out");
    in>>s1>>s2;
    if(strlen(s1)>strlen(s2))
    {
        char aux[51];
        strcpy(aux,s1);
        strcpy(s1,s2);
        strcpy(s2,aux);
    }
    bkt(0);
    out<<endl<<nrpal;

    return 0;
}