动态规划(DP),最长递增子序列(LIS)
2016-03-02 07:31
295 查看
题目链接:http://poj.org/problem?id=2533
解题报告:
状态转移方程:
dp[i]表示以a[i]为结尾的LIS长度
状态转移方程:
dp[0]=1;
dp[i]=max(dp[k])+1,(k<i),(a[k]<a[i])
解题报告:
状态转移方程:
dp[i]表示以a[i]为结尾的LIS长度
状态转移方程:
dp[0]=1;
dp[i]=max(dp[k])+1,(k<i),(a[k]<a[i])
#include <stdio.h> #define MAX 1005 int a[MAX];///存数据 int dp[MAX];///dp[i]表示以a[i]为结尾的最长递增子序列(LIS)的长度 int main() { int i,j,n; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); dp[0]=1; int Max=0; for(i=1;i<n;i++) { int k=0; for(j=0;j<i;j++) { if(a[j]<a[i]&&k<dp[j]) { k=dp[j]; } } dp[i]=k+1; } for(i=0;i<n;i++) { if(Max<dp[i]) Max=dp[i]; } printf("%d\n",Max); return 0; }
相关文章推荐
- 编程语言之C++的学习
- 学习心得之linux内核篇
- 学习心得之linux环境篇
- 学习心得之bash script
- makefile
- 学习心得之fatfs
- 深入理解Hadoop集群和网络
- 学习心得之通信篇(TCP/IP协议栈)
- 学习心得之调试篇
- 学习心得之协议篇
- ButterKnife结合RecyclerView.Adapter一起使用
- 学历差的程序员就该被虐吗?
- 表单验证
- 传纸条(一)(双线程dp)
- OSChina 周三乱弹 ——要不是这个发明程序员都去当医生了!
- 虚拟化 - 每天5分钟玩转 OpenStack(2)
- UIL加载图片的时候注意
- MyEclipse配置Maven
- 霍夫变换
- 虚拟化 - 每天5分钟玩转 OpenStack(2)