1010. Zipper (dp)

来源:互联网 发布:只进入身体知乎 编辑:程序博客网 时间:2024/05/18 01:41

soj.me/1010

dp[i][j]=    dp[i-1][j] && C[i+j-1]==A[i-1]    ||      dp[i][j-1] && C[i+j-1]==B[j-1]; 

#include <iostream>#include <string>#include <cstring>using namespace std;bool dp[201][201];int main(){int t;cin>>t;for(int z=1;z<=t;z++){memset(dp,false,sizeof(dp));dp[0][0]=1;string a,b,c;cin>>a>>b>>c;for(int i=0;i<=a.length();i++){for(int j=0;j<=b.length();j++){if(i==0){if(j==0) continue;else dp[0][j]=(dp[0][j-1]&&c[j-1]==b[j-1]);}else if(j==0)dp[i][0]=(dp[i-1][0]&&c[i-1]==a[i-1]);else dp[i][j]=((dp[i-1][j]&&c[i+j-1]==a[i-1])||(dp[i][j-1]&&c[i+j-1]==b[j-1]));}}cout<<"Data set "<<z<<": ";if(dp[a.length()][b.length()]) cout<<"yes"<<endl;else cout<<"no"<<endl;}return 0;}


原创粉丝点击