标签:
最长公共子序列 的 算法思路 在这里 点击进入 将 代码稍微改动一下 就可以 , 最长公共子序列 是两个 字符串求 公共子序列 , 可以将其中的 一个 改为 从 a 到 z 这样输入另一个 就得到了 单调递增最长子 序列 下面附上题目 和 代码
最长公共子序列 的 算法思路 在这里 点击进入 将 代码稍微改动一下 就可以 , 最长公共子序列 是两个 字符串求 公共子序列 , 可以将其中的 一个 改为 从 a 到 z 这样输入另一个 就得到了 单调递增最长子 序列 下面附上题目 和 代码
最长公共子序列 的 算法思路 在这里 点击进入 将 代码稍微改动一下 就可以 , 最长公共子序列 是两个 字符串求 公共子序列 , 可以将其中的 一个 改为 从 a 到 z 这样输入另一个 就得到了 单调递增最长子 序列 下面附上题目 和 代码
最长公共子序列 的 算法思路 在这里 点击进入 将 代码稍微改动一下 就可以 , 最长公共子序列 是两个 字符串求 公共子序列 , 可以将其中的 一个 改为 从 a 到 z 这样输入另一个 就得到了 单调递增最长子 序列 下面附上题目 和 代码
1 #include<stdio.h> 2 #include<string.h> 3 #include<math.h> 4 #include<iostream> 5 #include<algorithm> 6 #include<queue> 7 #include<vector> 8 #include<set> 9 #include<stack> 10 #include<string> 11 #include<sstream> 12 #include<map> 13 #include<cctype> 14 using namespace std; 15 int t,c[30][10005]; 16 char a[30],b[10005]; 17 int main() 18 { 19 scanf("%d",&t); 20 for(int i=0;i<=26;i++) 21 a[i]=‘a‘+i; 22 while(t--) 23 { 24 scanf("%s",b); 25 int lb=strlen(b); 26 memset(c,0,sizeof(c)); 27 for(int i=1;i<=26;i++) 28 { 29 for(int j=1;j<=lb;j++) 30 { 31 if(a[i-1]==b[j-1]) 32 c[i][j]=c[i-1][j-1]+1; 33 else 34 c[i][j]=c[i][j-1]>c[i-1][j]?c[i][j-1]:c[i-1][j]; 35 } 36 } 37 printf("%d\n",c[26][lb]); 38 } 39 return 0; 40 }
单调递增最长子序列 - 从最长公共子序列到单调递增最长子序列
标签:
原文地址:http://www.cnblogs.com/A-FM/p/5422295.html