51nod最长公共子序列
2016-07-02 18:27
85 查看
输入
输出
输入示例
输出示例
请选取你熟悉的语言,并在下面的代码框中完成你的程序,注意数据范围,最终结果会造成Int32溢出,这样会输出错误的答案。
不同语言如何处理输入输出,请查看下面的语言说明。
最长公共子序列长度好好求,但是输出序列比较麻烦,我们用回溯法输出
输入
输出
输入示例
输出示例
请选取你熟悉的语言,并在下面的代码框中完成你的程序,注意数据范围,最终结果会造成Int32溢出,这样会输出错误的答案。
不同语言如何处理输入输出,请查看下面的语言说明。
![](http://img.51nod.com/upload/000FBEAF/08D25D565D85EFF40000000000000002.jpeg)
我们在递推找最长子序列时,记录当前项在那个方向来的,上面记为-1,左面记为+1,左上角记为0,这样回溯时就根据递推路线找到每个元素;
输入
输出
输入示例
输出示例
请选取你熟悉的语言,并在下面的代码框中完成你的程序,注意数据范围,最终结果会造成Int32溢出,这样会输出错误的答案。
不同语言如何处理输入输出,请查看下面的语言说明。
第1行:字符串A 第2行:字符串B (A,B的长度 <= 1000)
输出
输出最长的子序列,如果有多个,随意输出1个。
输入示例
abcicba abdkscab
输出示例
abca
请选取你熟悉的语言,并在下面的代码框中完成你的程序,注意数据范围,最终结果会造成Int32溢出,这样会输出错误的答案。
不同语言如何处理输入输出,请查看下面的语言说明。
最长公共子序列长度好好求,但是输出序列比较麻烦,我们用回溯法输出
输入
第1行:字符串A 第2行:字符串B (A,B的长度 <= 1000)
输出
输出最长的子序列,如果有多个,随意输出1个。
输入示例
abcicba abdkscab
输出示例
abca
请选取你熟悉的语言,并在下面的代码框中完成你的程序,注意数据范围,最终结果会造成Int32溢出,这样会输出错误的答案。
不同语言如何处理输入输出,请查看下面的语言说明。
![](http://img.51nod.com/upload/000FBEAF/08D25D565D85EFF40000000000000002.jpeg)
我们在递推找最长子序列时,记录当前项在那个方向来的,上面记为-1,左面记为+1,左上角记为0,这样回溯时就根据递推路线找到每个元素;
#include <iostream> #include <string.h> #include <stdio.h> using namespace std; const int maxn=1050; char s1[maxn],s2[maxn], s[maxn]; int dp[maxn][maxn]; int b[maxn][maxn]; void out(int i,int j) { if(i==0||j==0) return ; if(b[i][j]==0) { out(i-1,j-1); printf("%c",s1[i-1]); } else if(b[i][j]==-1) { out(i-1,j); } else { out(i,j-1); } } int main() { int n; while(scanf("%s%s",s1,s2)!=-1) { int l1=strlen(s1); int l2=strlen(s2); memset(dp,0,sizeof(dp)); int tot=0; for(int i=0;i<l1;i++) { for(int j=0;j<l2;j++) { if(s1[i]==s2[j]) { dp[i+1][j+1]=dp[i][j]+1; b[i+1][j+1]=0; } else if(dp[i][j+1]>=dp[i+1][j]) { dp[i+1][j+1]=dp[i][j+1]; b[i+1][j+1]=-1; } else{ dp[i+1][j+1]=dp[i+1][j]; b[i+1][j+1]=1; } } } tot=dp[l1][l2]; cout<<tot<<endl; out(l1,l2); /// cout<<dp[l1][l2]<<endl; } return 0; }
输入
第1行:字符串A 第2行:字符串B (A,B的长度 <= 1000)
输出
输出最长的子序列,如果有多个,随意输出1个。
输入示例
abcicba abdkscab
输出示例
abca
请选取你熟悉的语言,并在下面的代码框中完成你的程序,注意数据范围,最终结果会造成Int32溢出,这样会输出错误的答案。
不同语言如何处理输入输出,请查看下面的语言说明。
相关文章推荐
- 最全的数组去重方法对比
- 51NOD 1035 最长的循环节(数论)
- json注入
- android文件上传
- php 文件操作
- 深入理解Java中的final关键字
- <LeetCode OJ> 371. Sum of Two Integers
- HDU 3974 Assign the task 暴力/线段树
- car的旅行路线
- xpath文档详解
- ORA-00942 表或视图不存在解决办法
- 最小生成树
- 10 进制
- 魔版
- 倒水
- mysql 数据库乱码配置文件设置
- socket.io建立长连接
- 四子连棋
- HTTP方法详解
- javah生成jni头文件时报错 Error: cannot access android.support...