码迷,mamicode.com
首页 > 其他好文 > 详细

单调递增最长子序列 - 从最长公共子序列到单调递增最长子序列

时间:2016-04-22 18:19:20      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:

最长公共子序列 的 算法思路 在这里 点击进入  将 代码稍微改动一下 就可以   ,   最长公共子序列  是两个 字符串求 公共子序列  , 可以将其中的 一个 改为 从 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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!