POJ2250 Compromise (LCS)
来源:互联网 发布:linux怎么查看日志 编辑:程序博客网 时间:2024/04/28 00:20
要点:
1.比较基础的lcs题,关键在于输入时用字符串输入,输出时用递归
#include<stdio.h>#include<stdlib.h>#include<string.h>int len1, len2;char a[500][35], b[500][35];int num[500][500], flag[500][500];void lcs(){ int i, j; for (i = 1; i <= len1; i++) { for (j = 1; j <= len2; j++) { if (strcmp(a[i-1], b[j-1]) == 0) { num[i][j] = num[i - 1][j - 1] + 1; flag[i][j] = 1; } else if (num[i - 1][j]>num[i][j - 1]) { num[i][j] = num[i - 1][j]; flag[i][j] = 2; //标记向下 } else { num[i][j] = num[i][j - 1]; flag[i][j] = 3; //标记向右 } } }}void getlcs(int i,int j) //这里要用递归,用数组赋值会出现格式不匹配{ if (i == 0 || j == 0) //i或j触底 return; if (flag[i][j] == 1) { getlcs(i - 1, j - 1); printf("%s ", a[i - 1]); //注意这里是输出i-1 } else if (flag[i][j] == 2) getlcs(i - 1, j); else getlcs(i, j - 1);}int main(){ int i, j; while (scanf("%s", a[0]) != EOF) //先输入第一个 { //用%s输入一个个字符串,比一个个字符输入减少时间 for (len1 = 1;; len1++) { scanf("%s", a[len1]); if (strcmp(a[len1], "#") == 0) break; } for (len2 = 0;; len2++) { scanf("%s", b[len2]); if (strcmp(b[len2], "#") == 0) break; } lcs(); getlcs(len1,len2); printf("\n"); } return 0;}
0 0
- POJ2250:Compromise(LCS)
- POJ2250:Compromise(LCS)
- POJ2250 Compromise (LCS)
- POJ2250 Compromise (LCS)
- poj2250 Compromise dp lcs 记录路径
- poj2250 - Compromise
- POJ2250 Compromise,map、dp
- POJ2250——Compromise
- POJ2250 Compromise(dp)
- POJ2250(compromise) 解题报告
- poj2250-打印单一LCS路径。
- POJ2250 Compromise DP最长公共子序列
- pku 2250 Compromise(LCS)
- [LCS]Uva531 Compromise
- 【POJ2250】Compromise (最长公共子序列,DP)
- POJ2250 & UVA 531 Compromise(字符串、 最长公共子序列)
- POJ2250---Compromise(dp,最长公共子序列,输出路径)
- uva531 - Compromise(动规,lcs)
- 滤波电容、去耦电容、旁路电容作用
- 随意细解:UI -- 标签视图控制器
- UIImagePickerController详解
- [LeetCode]002-AddTwoNumber
- Android调用系统相机方法及保存照片方式
- POJ2250 Compromise (LCS)
- 用jdbc返回集合数据时的一些小问题
- hdoj 1541 Stars
- UVA 12575 Sin Cos Problem
- viewpager的入门使用(1)
- Codeforces Round #333 (Div. 2) C. The Two Routes
- android动画
- CCF认证考试(java)---有趣的数
- nyoj--1233--差值(贪心模拟+大数)