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