hdu 1003 MAX Sum
来源:互联网 发布:找黑客拿股民数据库 编辑:程序博客网 时间:2024/06/03 18:27
今天写了一道这道题的升级版 略有感悟 想把这两篇一起写了
http://blog.csdn.net/xishizuozuo/article/details/53869480
题解 这个题可以理解为枚举长度 只是把一些不必要的枚举省去了
例如 1 2 3 如果是枚举长度 可以有6种答案
第一种1
第二种 2
第三种3
第四种1 2
第五种2 3
第六种1 2 3
这样太过于繁琐 所以可以压缩为
/*if(dp[b-1]>0)dp[b]=dp[b-1]+s1[b]; else dp[b]=s1[b];
*/
#include<stdio.h>#include<string.h> int s1[100100]; int dp[100100];int main(){ int t,a,n,b,star,end,max; scanf("%d",&t); for(a=1;a<=t;a++) { if(a!=1)printf("\n"); scanf("%d",&n); memset(dp,0,sizeof(dp)); for(b=0;b<n;b++) scanf("%d",&s1[b]); dp[0]=s1[0]; for(b=1;b<n;b++)//寻找前面的x个数相加最大 { if(dp[b-1]>0)dp[b]=dp[b-1]+s1[b];// else dp[b]=s1[b];// } max=dp[0];end=0; for(b=1;b<n;b++)//下面这步就是简单地往回走求长度 if(dp[b]>max) { end=b; max=dp[b]; } star=end; for(b=star-1;b>=0;b--) { if(dp[b]>=0) star=b; else break; } printf("Case %d:\n",a); printf("%d %d %d\n",max,star+1,end+1); } return 0;}
0 0
- HDU 1003 Max Sum
- hdu 1003 Max Sum
- hdu 1003 Max Sum
- HDU-1003 max sum
- HDU 1003 - Max Sum
- HDU 1003 Max Sum
- hdu 1003 Max Sum
- HDU 1003 Max Sum
- HDU 1003 Max Sum
- hdu 1003 max sum
- HDU 1003 Max Sum
- hdu 1003 Max Sum
- HDU 1003 Max Sum
- hdu 1003 Max Sum
- HDU 1003 Max Sum
- Hdu 1003 - Max Sum
- HDU-1003-Max Sum
- hdu - 1003 - Max Sum
- 回顾2016
- 正则表达式-笔记
- linux下的stat命令查看文件系统的时间
- 一个51单片机的键盘扫描程序,算法简单有效
- 文章标题
- hdu 1003 MAX Sum
- 工厂方法模式实例
- MySQL锁的用法之行级锁
- JSP的三个编译指令之page
- nginx实现简单的负载均衡
- Thinking in java4 15章 泛型
- 修改win10和ubuntu双系统启动顺序
- TCP 接收连接及消息的收发
- Android M 指纹框架