hdu5707Combine String(Dynamic_programme)

hdu5707Combine String

我的:
这个用一个二维Dynamic programme,要注意很多细节,在代码里展示吧。

我的:

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include


using namespace std;


const int maxn=5000+10;


typedef long long ll;

char a[maxn],b[maxn],c[maxn];

bool dp[maxn][maxn];

int main()
{
    while(~scanf("%s%s%s",a+1,b+1,c+1))
    {
        int lena=strlen(a+1);
        int lenb=strlen(b+1);
        int lenc=strlen(c+1);
        if(lena+lenb!=lenc)
        {
            cout<<"No"<continue;
        }
        memset(dp,false,sizeof(dp));
        dp[0][0]=true;
        for(int i=0;i<=lena;i++)
        {
            for(int j=0;j<=lenb;j++)
            {
                if(i>0&&a[i]==c[i+j])
                    dp[i][j]=dp[i-1][j];
                if(j>0&&b[j]==c[i+j])
                    dp[i][j]=dp[i][j-1];
            }
        }
//        for(int i=0;i<=lena;i++)
//        {
//            for(int j=0;j<=lenb;j++)
//                cout<
//            cout<
//        }
         if(dp[lena][lenb])
            cout<<"Yes"<else cout<<"No"<return 0;
}

你可能感兴趣的:(——动态规划dp————)