首页 > 代码库 > POJ 2192 Zipper
POJ 2192 Zipper
大体题意: 先输入试验次数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; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。