博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
杭电ACM——1087,Super Jumping! Jumping! Jumping!(DP)
阅读量:4049 次
发布时间:2019-05-25

本文共 673 字,大约阅读时间需要 2 分钟。

最大递增子序列问题

状态:dp[i]:前i个数当中,以a[i]为结尾所能构成的最大递增子序列的各数字之和
状态转移方程在代码中解释

#include
#include
#include
#include
#define inf 1000000000000using namespace std;long long dp[1005],a[1005];int main(){ int n,i,j; long long temp,ans; while(~scanf("%d",&n)&&n) { for(i=1;i<=n;i++) scanf("%lld",&a[i]); ans=dp[1]=a[1]; for(i=2;i<=n;i++) { temp=-inf; for(j=i-1;j>=1;j--) { if(a[j]
temp) temp=dp[j]; } } if(temp==-inf||temp<0) //temp=-inf表示没找着,temp<0表示此时前面最大递增序列和是负数,这时不能将a[i]加上去,这样只会让a[i]更小 dp[i]=a[i]; else dp[i]=a[i]+temp; if(ans

突破口:dp[i]要在保证递增的情况下,在前i-1个中挑选出最大的子序列。

转载地址:http://zbdci.baihongyu.com/

你可能感兴趣的文章
展望2007
查看>>
做个男人
查看>>
转:S3C2410 bootloader ----VIVI阅读笔记
查看>>
转:嵌入式系统 Boot Loader 技术内幕
查看>>
ARM 的宏定义
查看>>
SIGN UP BEC2
查看>>
S3C2440中对LED驱动电路的理解
查看>>
《天亮了》韩红
查看>>
Windows CE下USB摄像头驱动开发(以OV511为例,附带全部源代码以及讲解) [转]
查看>>
关于货币符号以及发音、币别码
查看>>
关于预处理器的学习
查看>>
ARM,S3C2410中脉宽调制定时器
查看>>
Zebra Bar-One 不能批量打印离散号码
查看>>
Platform创建WinCE内核时的编译错误
查看>>
玻璃杯
查看>>
柳永 《雨霖铃》
查看>>
MD2410开发板通过仿真器烧Bootloader简单流程
查看>>
MD2410仿真器烧Bootloader补充[1]:JTAG
查看>>
Meav《One I Love》
查看>>
林锐《高质量C++/C 编程指南》附录之《C++/C 代码审查表》
查看>>