hdu1003 最大连续子列和(动态规划★★★☆☆)
2014-07-28 23:11
253 查看
解题思路:
利用动态规划方法求解最大子列和,对应输入数据a[i],会有数据dp[i]。数组dp中的每个元素dp[i],表示以a[i]结尾的最大连续子列和。遍历dp数组,可以找出子列和最大值。
if (dp[i-1] >=0){
dp[i] = dp[i-1] + a[i];
}
else{
dp[i] = a[i]
}
利用动态规划方法求解最大子列和,对应输入数据a[i],会有数据dp[i]。数组dp中的每个元素dp[i],表示以a[i]结尾的最大连续子列和。遍历dp数组,可以找出子列和最大值。
if (dp[i-1] >=0){
dp[i] = dp[i-1] + a[i];
}
else{
dp[i] = a[i]
}
#include <iostream> #include <stdio.h> #include <stdlib.h> using namespace std; int r[100001]; int main() { //freopen("in.txt","r",stdin); int cs; r[0] = -1000000; scanf("%d",&cs); int n; for(int t=1;t<=cs;t++){ scanf("%d",&n); int s=0,e=0,m=-1000000; int a,b,tmp; for(int i=1;i<=n;i++){ scanf("%d",&r[i]); if(r[i-1]>=0){ r[i]+=r[i-1]; b=i; tmp = r[i]; } else{ a = b = i; tmp = r[i]; } if(tmp>m){ m = tmp; s = a; e = b; } } if(t!=1){ printf("\n"); } printf("Case %d:\n%d %d %d\n",t,m,s,e); } //system("pause"); return 0; }
相关文章推荐
- [ACM_动态规划] hdu1003 Max Sum [最大连续子串和]
- 求最大连续bit数-动态规划解法
- 【动态规划】求最大连续bit数
- [动态规划]hdu 1003 Max Sum 最大子列
- 求最大子列和 (连续子串的最大值)
- 最大连续子列之和
- 【动态规划】LCS算法:求两字符串最大公共字符串(连续)
- 【动态规划】求数组最大的子数组连续和
- poj 1750Potted Flower(线段树 区间合并 动态规划 区间求最大连续和)
- 动态规划求取连续数组最大和
- HDU 1003(动态规划-最大连续区间和)
- 最大子列和 动态规划 在线处理
- #HDU 2845 Beans 最大不连续子列和
- 小结:最大连续和,最大子矩阵和--附上hdu1003、poj1050=hdu1081解题报告
- CodeForces 332 B. Maximum Absurdity 动规 求和最大的两段连续子列
- HDU 1003 Max Sum(最大连续子列和)
- 最大连续子列和
- HDU1003 - Max Sum (最大连续子串和)
- hdu1003 最大连续子序和
- 求子数组最大和 (非连续)(动态规划)