NYOJ+最长上升子序列动态规划+数组因为输入数据时从位置0开始后面dp也是从0开始
2015-09-02 09:53
281 查看
点击打开链接
#include<stdio.h> #include<iostream> #include<string.h> #include<stdlib.h> using namespace std; int main() { char Arr[10005]={'\0'}; int n=0,len=0,seqlen[10005]={0},i=0,j=0,maxn=0,maxlen=0; scanf("%d",&n); while(n--) { memset(Arr,'\0',sizeof(Arr)); scanf("%s",Arr); len=strlen(Arr); maxlen=1; for(i=0;i<len;i++) seqlen[i]=1; for(i=1;i<len;i++) { maxn=0; for(j=0;j<i;j++) { if(Arr[j]<Arr[i]&&seqlen[j]>maxn)///在前i-1个序列中,寻找以终点小于Arr[i]的最长的子序列,即最优子状态 { maxn=seqlen[j];///前面最长的 } } seqlen[i]=maxn+1; if(seqlen[i]>maxlen)///seqlen中保存的是第i个数为终点的最长上升序列,找出这个数组中最大的值即为最优序列长度 maxlen=seqlen[i]; } printf("%d\n",maxlen); } return 0; }
相关文章推荐
- 算法练习-位操作小技巧
- 清晰高效的深度学习(Deep Learning)框架:Caffe
- Android - 卡片式布局 Fragment 详细回顾 (三)
- 关于css的样式和jsp、jquery相关问题
- JS中style属性
- windows7下安装php的imagick和imagemagick扩展教程
- Linux Command Line 解析
- iOS多线程——基础
- Python 常用的代码片段
- 后缀数组求最长重复子串
- Ubuntu下使用nload查看网卡实时流量
- Linux下安装及其使用git
- Android中创建Message两种方法比较,new Message和obtainMessage
- MySQL 获得当前日期时间(以及时间的转换)
- Ubuntu下通过makefile生成静态库和动态库简单实例
- ubuntu安装R
- Android Studio导入项目的几种方法
- 设计模式之Proxy
- my97datepicker 日历在jsp中路径问题
- Node.js v0.10.31API手工-DNS