UVA 531 Compromise
来源:互联网 发布:volatile c语言 编辑:程序博客网 时间:2024/06/06 04:48
大致题意:就是求两篇文章的最长公共子序列并打印
#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>using namespace std;const int N = 105, L = 35;char a[N][L], b[N][L];int pre[N][N], d[N][N], n, m, la, lb, flag;void lcs(){ memset (d, 0, sizeof (d)); memset (pre, 0, sizeof (pre)); for (int i = 1; i < la; ++i) { for (int j = 1; j < lb; ++j) { if (!strcmp (a[i], b[j])) { d[i][j] = d[i - 1][j - 1] + 1; pre[i][j] = 1; } else if (d[i - 1][j] > d[i][j - 1]) { d[i][j] = d[i - 1][j]; pre[i][j] = 2; } else { d[i][j] = d[i][j - 1]; pre[i][j] = 3; } } }}void print (int i, int j){ if (pre[i][j] == 1) { print (i - 1, j - 1); if (flag) flag = 0; else printf (" "); printf ("%s", a[i]); } else if (pre[i][j] == 2) print (i - 1, j); else if (pre[i][j] == 3) print (i, j - 1);}int main(){ while (scanf ("%s", a[1]) != EOF) { la = 1; lb = 0; flag = 1; while (scanf ("%s", a[++la]) && a[la][0] != '#'); while (scanf ("%s", b[++lb]) && b[lb][0] != '#'); lcs(); print (la - 1, lb - 1); printf ("\n"); } return 0;}
0 0
- uva 531 Compromise
- UVA 531 Compromise
- UVA 531 Compromise
- UVa 531 - Compromise
- UVa 531 - Compromise
- uva 531 - Compromise
- UVa 531 - Compromise
- Uva-531-Compromise
- UVa 531: Compromise
- UVa:531 Compromise
- UVA - 531 Compromise
- uva 531 Compromise
- uva 531 - Compromise
- uva 531 - Compromise
- UVa 531 - Compromise
- UVA - 531 Compromise
- UVA--531 Compromise
- UVA - 531 Compromise
- 分析Linux内核创建一个新进程的过程
- libva中的H.264编码内存泄露问题
- 直接插入排序——java
- android开发笔记之ListView的优化+分类显示
- Android API学习之XmlPullParser
- UVA 531 Compromise
- ESP8266-SDK的3路PWM输出
- 使用socket套接字创建服务器
- 学会自己测天气------06
- VB.NET机房重构篇之数据库小问题
- iOS学习之UIView
- HDU 5044Tree 树链剖分
- 针对一个WEB请求响应,浏览器和服务器都做了什么
- G++开栈