大体题意: 先输入试验次数num,再输入三个字符串A,B,C,判断C可否由A,B按照某种次序组成。如下图。
一次百度的面试题。
#include <cstdio> #include <cstring> using namespace std; #define MAX_SIZE 205 char A[MAX_SIZE]; char B[MAX_SIZE]; char C[2 * MAX_SIZE]; bool dp[MAX_SIZE][MAX_SIZE]; int main() { int num; scanf("%d", &num); for( int i = 1; i <= num; ++i ){ scanf("%s %s %s", A, B, C); memset( dp, false, sizeof( dp ) ); int len_a = strlen( A ); int len_b = strlen( B ); dp[0][0] = true; for( int a = 0; a <= len_a; ++a ){ for( int b = 0; b <= len_b; ++b ){ if( a > 0 && dp[a - 1][b] && C[a + b - 1] == A[a - 1] ) dp[a][b] = true; if( b > 0 && dp[a][b - 1] && C[a + b - 1] == B[b - 1] ) dp[a][b] = true; } } printf("Data set %d: %s\n", i, dp[len_a][len_b] ? "yes" : "no"); } return 0; }
POJ 2192 Zipper,布布扣,bubuko.com
原文地址:http://blog.csdn.net/pandora_madara/article/details/26409149