hdu 1503 Advanced Fruits
来源:互联网 发布:excel数据 access 编辑:程序博客网 时间:2024/05/18 01:41
最长公共子序列
给你2个字符串,找出一个一个最短的字符串,同时包含这2个字符串。
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<algorithm>#define maxn 1100using namespace std;int dp[maxn][maxn];int vis[maxn][maxn];char s1[maxn],s2[maxn];void fact(int i,int j){ if(i<=0&&j<=0)return ; if(vis[i][j]==1) { fact(i-1,j-1); printf("%c",s1[i-1]); } else if(vis[i][j]==2)//左 { fact(i,j-1); printf("%c",s2[j-1]); } else//上 { fact(i-1,j); printf("%c",s1[i-1]); }}int main(){ while(scanf("%s%s",s1,s2)!=EOF) { int len1=strlen(s1); int len2=strlen(s2); memset(dp,0,sizeof(dp)); for(int i=1; i<=len1; i++) { for(int j=1; j<=len2; j++) { if(s1[i-1]==s2[j-1]) { dp[i][j]=dp[i-1][j-1]+1; vis[i][j]=1;//左上 } else if(dp[i][j-1]>=dp[i-1][j]) { dp[i][j]=dp[i][j-1]; vis[i][j]=2;//左 } else { dp[i][j]=dp[i-1][j]; vis[i][j]=3;//上 } } } for(int i=0; i<=len1; i++) vis[0][i]=2; for(int i=0; i<=len1; i++) vis[i][0]=3; fact(len1,len2); printf("\n"); } return 0;}
0 0
- HDU 1503 Advanced Fruits
- HDU 1503 Advanced Fruits
- HDU 1503 - Advanced Fruits
- hdu 1503 Advanced Fruits
- hdu 1503 Advanced Fruits
- hdu 1503 Advanced Fruits
- hdu 1503 advanced fruits
- HDU 1503 Advanced Fruits
- hdu 1503 Advanced Fruits
- hdu 1503 Advanced Fruits
- hdu 1503 Advanced fruits
- HDU 1503 Advanced Fruits
- hdu 1503 Advanced Fruits
- hdu 1503 Advanced Fruits
- HDU 1503 Advanced Fruits
- HDU 1503 Advanced Fruits
- HDU-1503 Advanced Fruits
- HDU 1503 Advanced Fruits[ LCS ]
- 在线实时大数据平台Storm单机部署
- 任一个英文的纯文本文件,统计其中的单词出现的个数。
- 摄像机的左右前后移动以及旋转
- SQL表连接查询(inner join、full join、left join、right join)
- JAVA自带的进制转换函数
- hdu 1503 Advanced Fruits
- Activity详解(三)
- 双指针的作用
- 配置NGINX前端APACHE后端服务器
- java链表的增删查改的实现与测试
- C++获取一个文件夹下的所有文件名
- NYOJ-28 大数阶乘
- re模块--正则
- 完成端口模型