NYOJ-17-单调递增最长子序列
来源:互联网 发布:斗鱼手机客户端无网络 编辑:程序博客网 时间:2024/06/06 17:36
单调递增最长子序列
时间限制: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>int main(){ char a[10005]; int dp[10005];//存储前i位最长子序列长度 int n,i,j,len; scanf("%d",&n); getchar(); while(n--) { memset(a,0,sizeof(a)); memset(dp,0,sizeof(dp)); dp[0]=1; scanf("%s",a); getchar(); len=strlen(a); for(i=1;i<len;i++) { for(j=i-1;j>=0;j--) { if(a[i]>a[j]&&dp[i]<dp[j])//a[i]>a[j] { dp[i]=dp[j]; } } dp[i]++; } int max=-1; for(i=0;i<len;i++) { if(dp[i]>max) max=dp[i]; }//找dp[]中的最大值 printf("%d\n",max); } return 0;}*/
第二次 优化代码:
#include <stdio.h>#include <string.h>int main(){ char a[10005]; int dp[30];//最长子序列为26,dp[30]用来存储26个字母 int n,i,j,len; scanf("%d",&n); getchar();//不要忘 while(n--) { memset(a,0,sizeof(a)); memset(dp,0,sizeof(dp));//初始化 scanf("%s",a); getchar();// len=strlen(a); int cnt=0; for(i=0;i<len;i++) { for(j=cnt;j>=0;j--) { if(a[i]>dp[j])//如果a[i]>dp[j],把a[i]放在dp[j]后面 { dp[j+1]=a[i]; if(j==cnt) cnt++;//cnt++ break; } } } printf("%d\n",cnt); } return 0;}
以上。
0 0
- NYOJ-17:单调递增最长子序列
- NYOJ 17 单调递增最长子序列
- NYOJ 17 单调递增最长子序列
- NYOJ 17-单调递增最长子序列
- nyoj-17-单调递增最长子序列
- NYOJ 17 单调递增最长子序列
- NYOJ 17 单调递增最长子序列
- NYOJ 17 最长单调递增子序列
- nyoj 17 单调递增最长子序列
- NYOJ 17 单调递增最长子序列
- nyoj 17 单调递增最长子序列
- nyoj 17 单调递增最长子序列
- nyoj 17 单调递增最长子序列
- nyoj 17 单调递增最长子序列
- NYOJ 17 单调递增最长子序列
- 单调递增最长子序列(NYOJ 17)
- nyoj-17 单调递增最长子序列
- NYOJ 单调递增最长子序列 17
- 利用js实现无刷新上传头像(或文件)并显示进度条
- Java synchronized详解
- NSIS 安装程序 制作32+64位安装包
- Android Studio 模板用法与自定义模板
- 【Java基础】Java中多态的理解
- NYOJ-17-单调递增最长子序列
- 擅长排列的小明
- 发送有序广播
- checkbox 方法运用
- Windows下Git多账号配置,同一电脑多个ssh-key的管理
- mysql 常用操作
- PHP中的ob_start用法详解
- leetcode 347. Top K Frequent Elements 将Hashmap统计次数的Entry,放到List<Entry>里面,对list排序后出现结果
- (HDU 5794)2016 Multi-University Training Contest 6 A Simple Chess (Lucas、容斥)