poj 2192
简答dp
代码:
#include<iostream>
#include<fstream>
using namespace std;
char a[201],b[201],c[401];
bool dp[201][401];
void read(){
// ifstream cin("in.txt");
int i,j,k;
int cas;
cin>>cas;
for(k=1;k<=cas;k++)
{
cin>>a>>b>>c;
int n1=strlen(a);
int n2=strlen(b);
memset(dp,0,sizeof(dp));
dp[0][0]=1;
for(i=0;i<=n1;i++)
for(j=i;j<=n1+n2;j++)
{
if(i>0&&a[i-1]==c[j-1])
dp[i][j]=dp[i-1][j-1];
if(j>i&&c[j-1]==b[j-i-1])
dp[i][j]=dp[i][j-1]||dp[i][j];
}
printf("Data set %d: ",k);
if(dp[n1][n1+n2])
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
}
}
int main(){
read();
return 0;
}
浙公网安备 33010602011771号