Hdu 1231 最大连续子序列(DP)
来源:互联网 发布:linux 指令grep mong 编辑:程序博客网 时间:2024/05/05 13:17
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1231
思路:dp[i]表示从1到i (可以不从1开始,但是要连续到i)可以得到的最大值。pre[i]表示以i结尾,取到最大连续子序列和的首位编号。
于是:如果dp[i-1]>=0 就让dp[i] =dp[i-1]+a[i], 否则,dp[i] = a[i] 同时还要更新起点s和pre[s]。如果dp[i]>max 更新终点end。
代码:
#include<stdio.h>#define M 10005#define INF 99999999int a[M],dp[M],pre[M];int main(){ int t,n,i,j,flag; while(scanf("%d",&n)!=EOF && n!=0) { flag = 1; dp[0] = -INF; int max = -INF; //初始化 int s = 1,end = 1; for(j=1;j<=n;j++) { dp[j] = 0; scanf("%d",&a[j]); if(a[j] >= 0)flag = 0; if(dp[j-1] >= 0){ //dp dp[j] = dp[j-1]+a[j]; }else { dp[j] = a[j]; s = j; //改变起点。 } pre[j] = s; if(dp[j] > max) { max = dp[j]; end = j; //找到终点。 } } if(flag)printf("0 %d %d\n",a[1],a[n]); else printf("%d %d %d\n",max,a[pre[end]],a[end]); } return 0;}
0 0
- hdu 1231 最大连续子序列(DP)
- HDU 1231 最大连续子序列 (dp)
- hdu 1231最大连续子序列 【DP】
- hdu 1231 最大连续子序列 (dp)
- HDU 1231 最大连续子序列(dp)
- 最大连续子序列 - HDU 1231 dp
- hdu 1231 最大连续子序列 DP
- hdu 1231 最大连续子序列(dp)
- HDU-1231-最大连续子序列【dp】
- hdu 1231 最大连续子序列 DP
- HDU 1231 最大连续子序列(DP)
- HDU-1231-最大连续子序列【DP】
- HDU 1231 最大连续子序列【dp】
- HDU 1231 最大连续子序列 DP .
- hdu 1231 dp 最大连续子序列
- 最大连续子序列 (dp)HDU 1231
- HDU 1231 最大连续子序列 (DP)
- hdu 1231 最大连续子序列(dp)
- 周易正易 p99-200
- live555 client多线程化
- 出国留学海外电汇流程
- CF round 235
- http client 4可运行的程序
- Hdu 1231 最大连续子序列(DP)
- CF 13E Holes (块状链表)
- ChainMapper和ChainReducer
- Android学习笔记(一)题记
- uva10160
- 07____多线程实现线程通信(Lock和Condition)
- websocket
- HDwiki架构
- cin/printf 重定向