HDU 1503 Advanced Fruits (递推)
来源:互联网 发布:linux运行中结束进程 编辑:程序博客网 时间:2024/06/06 00:07
题目:点击打开链接
题意:给你两个单词,找出它们的最长公共子序列,输出一个含有最长公共子序列的最短单词。
解法:lcs求最长公共子序列,dp[i][j]表示在s1的i位置,s2的j位置的最长公共子序列的长度;定义ans结构体倒序存最长公共子序列的字母,i存该字母在s1的位置,j存该字母在s2的位置;输出时分清情况一个字母一个字母的输出。
代码:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
#include <iostream>#include <cstring>using namespace std;struct sa{ int i,j; char ch;}ans[205];int len1,len2,dp[105][105];char s1[105],s2[105];void lcs(){ for(int i=1;i<=len1;i++) for(int j=1;j<=len2;j++) { if(s1[i]==s2[j]) dp[i][j]=dp[i-1][j-1]+1; else dp[i][j]=max(dp[i-1][j],dp[i][j-1]); }}int main(){ int len,i,j; while(cin>>s1+1>>s2+1) { len1=strlen(s1+1); len2=strlen(s2+1); memset(dp,0,sizeof(dp)); lcs(); if(dp[len1][len2]==0) cout<<s1+1<<s2+1<<endl; else { len=0; while(len1!=0&&len2!=0) { if(dp[len1][len2]==dp[len1-1][len2-1]+1&&s1[len1]==s2[len2]) { ans[len].i=len1; ans[len].j=len2; ans[len++].ch=s1[len1]; len1--; len2--; } else if(dp[len1-1][len2]>dp[len1][len2-1]) len1--; else len2--; } } i=j=1; for(int k=len-1;k>=0;k--) { while(i!=ans[k].i) { cout<<s1[i]; i++; } while(j!=ans[k].j) { cout<<s2[j]; j++; } cout<<ans[k].ch; i++;j++; } cout<<s1+1+ans[0].i<<s2+1+ans[0].j<<endl; } return 0;}
0 0
- HDU 1503 Advanced Fruits (递推)
- HDU 1503Advanced 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
- HPROSE for java 过滤器 filter + 重写session
- leetcode No147. Insertion Sort List
- kinect脚本部分翻译/注释
- 原生js代码实现图片放大境效果
- PHP MySQLi 增删改查
- HDU 1503 Advanced Fruits (递推)
- 基于HTTPS的双向认证实现
- laravel 生成验证码的方法
- 第八周扩展实践
- Android群英传--动画机制与技巧(一)
- Running Mesos - Getting Started
- 解决连接mongoDB出现问题:MongoDB : Failed to connect to 127.0.0.1:27017, reason: errno:61 Connection refused
- typedef int datatype 的用意
- JAVA常用设计模式(1)单例模式