Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int N = 1000;
- char strA[N + 1], strB[N + 1], str[N + N + 1];
- bool dp[N + 1][N + 1];
- int main(){
- scanf(" %s %s", strA, strB);
- int lenA = strlen(strA);
- int lenB = strlen(strB);
- int Q;
- scanf("%d", &Q);
- while(Q--){
- scanf(" %s", str);
- dp[0][0] = true;
- for(int i = 1; i <= lenA; ++i){
- dp[i][0] = (str[i - 1] == strA[i - 1]) ? dp[i - 1][0] : false;
- }
- for(int j = 1; j <= lenB; ++j){
- dp[0][j] = (str[j - 1] == strB[j - 1]) ? dp[0][j - 1] : false;
- }
- for(int i = 1; i <= lenA; ++i){
- for(int j = 1; j <= lenB; ++j){
- dp[i][j] = false;
- int k = i + j;
- if(str[k - 1] == strA[i - 1] && strA[i - 1] == strB[j - 1]){
- dp[i][j] = dp[i - 1][j] || dp[i][j - 1];
- } else if(str[k - 1] == strA[i - 1]){
- dp[i][j] = dp[i - 1][j];
- } else if(str[k - 1] == strB[j - 1]){
- dp[i][j] = dp[i][j - 1];
- }
- }
- }
- if(dp[lenA][lenB]){
- cout << "Yes\n";
- } else {
- cout << "No\n";
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement