UVA 531 DP LCS 打印路径
2014-07-08 22:00
417 查看
fa数组初始化搞了半天。莫名WA了好几次,不知道瞎搞后来就AC了,汗。。
很是蛋疼啊。感觉理解不到位
很是蛋疼啊。感觉理解不到位
#include <map> #include <set> #include <list> #include <cmath> #include<cctype> #include <ctime> #include <deque> #include <stack> #include <queue> #include <cstdio> #include <string> #include <vector> #include <cstdlib> #include <cstring> #include <iostream> #include <algorithm> #define LL long long #define PI 3.1415926535897932626 using namespace std; int gcd(int a, int b) { return a % b == 0 ? b : gcd(b, a % b); } #define MAXN 120 char input1[MAXN][50],input2[MAXN][50]; int num_1,num_2; int dp[MAXN][MAXN],fa[MAXN][MAXN];//fa=0表示选当前LCS,fa=1表示dp[i][j]=dp[i-1][j],fa=2表示dp[i][j]=dp[i][j-1] bool first; void read() { num_1=2,num_2=1; while (scanf("%s",input1[num_1])==1 && input1[num_1][0]!='#') num_1++; while (scanf("%s",input2[num_2])==1 && input2[num_2][0]!='#') num_2++; //printf("%d %d\n",num_1,num_2); } void slove() { memset(dp,0,sizeof(dp)); memset(fa,-1,sizeof(fa)); first=true; for (int i=1;i<num_1;i++) for (int j=1;j<num_2;j++) { if (strcmp(input1[i],input2[j])==0) { fa[i][j]=0; dp[i][j]=dp[i-1][j-1]+1; } else if (dp[i-1][j]>dp[i][j-1]) { fa[i][j]=1; dp[i][j]=dp[i-1][j]; } else { fa[i][j]=2; dp[i][j]=dp[i][j-1]; } } } void print(int n,int m) { if (n==0 || m==0)return ; if (fa [m]==0) { print(n-1,m-1); if (first) {first=false;printf("%s",input1 );} else printf(" %s",input1 ); } if (fa [m]==1) print(n-1,m); if (fa [m]==2) print(n,m-1); } int main() { //freopen("sample.txt","r",stdin); while (scanf("%s",input1[1])!=EOF) { if (input1[1][0]=='#') break; read(); slove(); print(num_1-1,num_2-1); putchar('\n'); } return 0; }
相关文章推荐
- uva 531 - Compromise(LCS+打印路径)
- UVA 531 - Compromise(dp + LCS打印路径)
- UVA 531 - Compromise(dp + LCS打印路径)
- uva531- Compromise(lcs+打印路径)
- UVA 531 Compromise(LCS算法+打印路径)
- UVA 624 CD(01背包+dp打印路径)
- uva 116 Unidirectional TSP dp + 打印路径
- DP(递归打印路径) UVA 662 Fast Food
- uva624 CD(dp 0-1 背包 打印路径)
- UVALive 4261——Trip Planning——————【dp+打印路径】
- uva 11404 LCS打印字典序最小路径
- Brackets sequence UVA - 1626 (典型的区间dp+递归打印路径)
- UVA 11404 Palindromic Subsequence[DP LCS 打印]
- UVA 题目10453 Make Palindrome(区间DP,打印路径)
- uva1626 poj 1141 Brackets Sequence 区间dp 打印路径
- POJ 1141 / UVa 1626 Brackets Sequence (区间DP&打印路径)
- UVa 531 Compromise (DP&LCS)
- UVA11404-----Palindromic Subsequence-----DP之LCS
- uva 624 CD (01背包+打印路径)
- uva 10917 Walk Through the Forest(最短路+DP路径,4级)