Pagini recente » Cod sursa (job #376455) | Cod sursa (job #1080173) | Cod sursa (job #396427) | Cod sursa (job #1447200) | Cod sursa (job #2485277)
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("iv.in");
ofstream g("iv.out");
char a[510], b[510];
int d[2][110][510];
int main()
{
f>>a+1>>b+1;
int n = strlen(a+1), m = strlen(b+1);
///d[L][i][j] = posibilitati de lungime L*2 cu i din a la inceput
/// si L-i din b, j din a la sfarsit si L-j din b
//initializez
if ( a[1] == a[n] ) d[1][1][1] = 1; //ambele din a
if ( b[1] == b[m] ) d[1][0][0] = 1; //ambele din b
if ( a[1] == b[m] ) d[1][1][0] = 1; //primul din a, al doilea din b
if ( b[1] == a[n] ) d[1][0][1] = 1; //primul din b, al doilea din a
for ( L=2; L <= (n+m)/2, L++)
for ( i=0; i <= n && i <= L; i++ )
for ( j=0; i+j <= n && j <= L; j++ ){
d[t][i][j] = 0;
if ( a[i] == a[L-i] && i && n-j+1 <= n )
d[t][i][j] = ( d[t][i][j] + d[t-1][i-1][j-1] ) % MOD;
if ( b[L-i] == b[n])
}
return 0;
}