AC

许诺  •  19小时前


#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main()
{
    string A, B, X;
    cin >> A >> B >> X;
    int n = A.size();
    int m = B.size();
    if(n + m != X.size())
    {
        cout << "false" << endl;
        return 0;
    }

    vector<vector<bool>> dp(n+1, vector<bool>(m+1, false));
    dp[0][0] = true;

    for(int i = 0; i <= n; ++i)
    {
        for(int j = 0; j <= m; ++j)
        {
            if(i == 0 && j == 0) continue;
            bool ok = false;
            if(i > 0 && dp[i-1][j] && A[i-1] == X[i+j-1])
            {
                ok = true;
            }
            if(j > 0 && dp[i][j-1] && B[j-1] == X[i+j-1])
            {
                ok = true;
            }
            dp[i][j] = ok;
        }
    }
    if(dp[n][m])
        cout << "true" << endl;
    else
        cout << "false" << endl;
    return 0;
}

复制代码的是gay


评论:

请先登录,才能进行评论