nyoj 题目17 单调递增最长子序列
2014-10-17 11:46
288 查看
http://acm.nyist.net/JudgeOnline/problem.php?pid=17
难度:4
描述 求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4
输入第一行一个整数0<n<20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000输出输出字符串的最长递增子序列的长度样例输入
样例输出
http://acm.nyist.net/JudgeOnline/problem.php?pid=17
单调递增最长子序列
时间限制:3000 ms | 内存限制:65535 KB难度:4
描述 求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4
输入第一行一个整数0<n<20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000输出输出字符串的最长递增子序列的长度样例输入
3 aaa ababc abklmncdefg
样例输出
1 3 7
#include<stdio.h> #include<string.h> #define MAX 10000 int main() { char s[MAX+10]; int a[MAX+10],T,n,i,j,k; scanf("%d",&T); while(T--) { scanf("%s",s); n=strlen(s); memset(a,0,sizeof(a)); for(i=1,a[0]=1,k=0;i<n;i++) {//时间复杂度O(n^n) a[i]=1; for(j=i-1;j>=0;j--)//从i前一位i-1往前扫描,扫描第一个比s[i]小的,为s[j],然后a[i]=a[j]+1 if(s[i]>s[j]&&a[i]<=a[j]/*特别注意这里*/) { a[i]=a[j]+1; } if(a[i]>k)//每一次都比较,把最大的存到k中 k=a[i]; } //for(i=0;i<n;i++) //printf("%d ",a[i]); //printf("\n"); if(k==0)//特别注意这里 k+=1; printf("%d\n",k); } return 0; }
相关文章推荐
- 【NYOJ】题目17单调递增最长子序列
- NYOJ 题目17 单调递增最长子序列(动态规划)
- NYOJ 题目17 单调递增最长子序列 (DP)
- NYOJ 题目17 单调递增最长子序列
- NYOJ 题目17 单调递增最长子序列 (DP) hdu 题目2845 Bean
- NYOJ 17 单调递增最长子序列 DP
- nyoj 17 单调递增最长子序列
- nyoj17 单调递增最长子序列(dp)
- nyoj-17 单调递增最长子序列
- NYOJ 17 单调递增最长子序列
- nyoj17单调递增最长子序列--动态规划-初步
- NYOJ17 单调递增最长子序列(动态规划)
- 题目17:单调递增最长子序列
- nyoj17 单调递增最长子序列
- nyoj 17 单调递增最长子序列
- 单调递增最长子序列 && 拦截导弹(nyoj 17 && nyoj 79)
- NYOJ 17 单调递增最长子序列
- nyoj17单调递增最长子序列(N*logN)
- nyoj17单调递增最长子序列
- 单调递增最长子序列(nyoj17)