Pagini recente » Cod sursa (job #321056) | Cod sursa (job #1650665) | Cod sursa (job #1522705) | Cod sursa (job #2293056) | Cod sursa (job #2256197)
#include<fstream>
#include<cstring>
using namespace std;
ifstream in("iv.in");
ofstream out("iv.out");
int na,nb,mat[501][501][501];
char a[501],b[501];
int main (void) {
in >> a+1;
in >> b+1;
na=strlen (a+1);
nb=strlen (b+1);
mat[0][0][na+1] = 1;
for (int i = 0; i <= na; i ++) {
for (int j = 0; j <= nb; j ++) {
for (int k = na+1; k >= 1; k --) {
if (i == 0 && j == 0 && k == na+1) continue;
int l = nb -(i+j -(na-k));
if (a[i] == a[k] && i > 0 && k < na+1) {
mat[i][j][k] += mat[i-1][j][k-1];
}
if (a[i] == b[l] && i > 0 && l < nb+1) {
mat[i][j][k] += mat[i-1][j][k];
}
if (b[j] == a[k] && j > 0 && k <= na+1) {
mat[i][j][k] += mat[i][j-1][k-1];
}
if (b[j] == b[l] && j > 0 && l <= nb + 1) {
mat[i][j][k] += mat[i][j-1][k];
}
}
}
}
out << mat[na][nb][1];
return 0;
}