HDU 1503(字符串,合并输出)
来源:互联网 发布:网络分层结构模型 编辑:程序博客网 时间:2024/04/27 21:25
#include<cstdio>#include<cstring>#include<string>#include<cmath>#include<vector>#include<algorithm>#include<iostream>#include<time.h>using namespace std;int dp[105][105];int mark[105];int path[105][105];char str1[105], str2[105];int main(){ str1[0] = str2[0] = '0'; while (cin >> str1 + 1 >> str2 + 1) { int i, j, k; memset(dp, 0, sizeof(dp)); memset(mark, -1, sizeof(mark)); memset(path, 0, sizeof(path)); int len1, len2; len1 = strlen(str1) - 1; len2 = strlen(str2) - 1; for (i = 1; i <= len1; i++) { for (j = 1; j <= len2; j++) { if (str1[i] == str2[j]) { dp[i][j] = dp[i - 1][j - 1] + 1; } else if (dp[i - 1][j] > dp[i][j - 1]) { dp[i][j] = dp[i - 1][j]; path[i][j] = 1; } else { dp[i][j] = dp[i][j - 1]; path[i][j] = 2; } } } for (i = len1, j = len2; i >= 1 && j >= 1;) { if (str1[i] == str2[j]) { mark[i] = j; i--; j--; } else if (path[i][j] == 1) { i--; } else { j--; } } int temp = 1; for (i = 1; i <= len1; i++) { if (mark[i]== -1) { printf("%c", str1[i]); } else { for (k = temp; k <= mark[i]; k++) { printf("%c", str2[k]); } temp= mark[i] + 1; } } for (i = temp; i <= len2; i++) printf("%c", str2[i]); printf("\n"); } return 0;}
0 0
- HDU 1503(字符串,合并输出)
- HDU 1503(字符串,合并输出)
- HDU 1020 Encoding(字符串合并)
- 将两个字符串合并为一个字符串并且输出
- hdu 1583 字符串合并加全排列
- 合并字符串(指针)
- HDU 2539 点球大战(字符串+输出坑)
- hdu 1062(字符串的处理 倒序输出)
- 取一个字符串的所有子集合并打印输出
- 合并两个输入的字符串按降序输出
- HDU 1020 Encoding 控制字符串的输出
- Python合并(拼接) 字符串
- 拷贝字符串:将一个字符串放到另一字符串末尾合并输出。
- hdu 4553 (区间合并)
- 字符串合并
- 字符串合并
- 合并字符串
- 字符串合并
- mvn test执行单元测试一个类
- 3626: [LNOI2014]LCA
- js总结
- 371. Sum of Two Integers(位运算)
- nncq---见证子系统(检测人员管理--机构信用评价)
- HDU 1503(字符串,合并输出)
- MongoDB集群卡死问题
- Unity3D 2D入门 —— 关于 UGUI,记录下GridLayoutGroup
- TabLayout的使用总结
- HDU 1503(字符串,合并输出)
- Java虚拟机工作原理详解
- mac版GitHub配置、上传代码详细流程
- BZOJ4580: [Usaco2016 Open]248 dp
- Linux电源管理(3)_Generic PM之Reboot过程