【UVA】531-Compromise(最长公共子串)
来源:互联网 发布:淘宝虚拟物品发货 编辑:程序博客网 时间:2024/06/05 22:54
最长公共子串的问题,只不过单位从字符变成字符串了。
没什么好说的了~
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<map>#include<stack>#include<queue>#include<set>#include<ctime>#include<cmath>#include<string>#include<iomanip>#include<climits>#include<cctype>#include<deque>#include<list>#include<sstream>#include<vector>#include<cstdlib>using namespace std;#define _PI acos(-1.0)#define INF (1 << 30)typedef long long LL;typedef unsigned long long ULL;typedef pair<int,int> pill;/*================================================================================================*/#define MAXD 100 + 10#define LEN 30 + 10char txt1[MAXD][LEN];char txt2[MAXD][LEN];int size_1;int size_2;int dp[MAXD][MAXD];void print(int n,int pos1,int pos2){ if(n < 0) return ; for(int i = pos1 ; i >= 1; i--) for(int j = pos2 ; j >= 1; j--) if(strcmp(txt1[i],txt2[j]) == 0 && dp[i][j] == n){ print(n - 1,i,j); if(n == dp[size_1][size_2]) printf("%s",txt1[i]); else printf("%s ",txt1[i]); return ; }}void DP(){ memset(dp,0,sizeof(dp)); for(int i = 1 ; i <= size_1 ; i++) for(int j = 1 ; j <= size_2 ; j++){ if(strcmp(txt1[i],txt2[j]) == 0) dp[i][j] = max(dp[i][j],dp[i - 1][j - 1] + 1); else dp[i][j] = max(dp[i - 1][j],dp[i][j - 1]); } print(dp[size_1][size_2],size_1,size_2); printf("\n");}int main(){ size_1 = 1; size_2 = 1; while(scanf("%s",txt1[size_1]) != EOF){ size_1 ++; while(scanf("%s",txt1[size_1])){ if(txt1[size_1][0] == '#'){ size_1--; break; } else size_1++; } while(scanf("%s",txt2[size_2])){ if(txt2[size_2][0] == '#'){ size_2--; break; } else size_2++; } DP(); size_1 = 1; size_2 = 1; } return 0;}
0 0
- 【UVA】531-Compromise(最长公共子串)
- UVA 531 Compromise 最长公共子序列(DP)
- UVa 531 Compromise (DP 最长公共子序列)
- uva 531 Compromise (最长公共子序列)
- POJ2250 & UVA 531 Compromise(字符串、 最长公共子序列)
- Compromise(最长公共子串变形,打印路径)
- UVA Compromise(最长公共子序列 + 打印路径)
- uvaoj 531 Compromise 最长公共子序列求出子序列
- POJ 2250Compromise(DP最长子公共子序列)
- 【POJ2250】Compromise (最长公共子序列,DP)
- poj 2250 Compromise(LCS,最长公共子序列)
- POJ 2250 Compromise(最长公共子序列)
- poj_2250 Compromise(输出最长公共子序列)
- POJ 2250 Compromise(需要标记的最长公共子串)
- POJ2250 Compromise DP最长公共子序列
- poj 2250 Compromise(最长公共子序列)
- uva 531(最长公共子序列)
- POJ 2250 Compromise(最长公共子序列 列出子序列)
- 如何反编译apk文件得到源码和XML文件
- Atitit.现实生活中最好使用的排序方法-----ati排序法总结
- 进程与线程的一个简单解释
- 使用ListView的Fragment
- Android Handler消息机制深入浅出
- 【UVA】531-Compromise(最长公共子串)
- linux的互斥mutex
- HDU2457 DNA repair AC自动机
- UVA 1220Party at Hali-Bula
- Eclipse的源码修改
- 有源蜂鸣器与无源蜂鸣器的区别(超全)
- 关于IL中间语言的浅谈
- C#学习
- Android 使用Socket完成进程间通信