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;
}

posted on 2011-05-07 18:20  宇宙吾心  阅读(306)  评论(0)    收藏  举报

导航