HDU 1003 求最大子段和的动态规划
来源:互联网 发布:12864显示一个数组 编辑:程序博客网 时间:2024/05/16 12:25
http://acm.hdu.edu.cn/showproblem.php?pid=1003
算法基本思路:
/*
* 此题是动态规划找到 a[1……n] 中 最大的字段和
* 令 b[j] 为 在 子段中 k->j 是最大值 k∈ (1,j)
* 那么 状态转移方程 为 b[j] = max{ b[j-1]+a[j] , a[j]};
*/
import java.util.Scanner;/* * 此题是动态规划找到 a[1……n] 中 最大的字段和 * 令 b[j] 为 在 子段中 k->j 是最大值 k∈ (1,j) * 那么 状态转移方程 为 b[j] = max{ b[j-1]+a[j] , a[j]}; */public class HDU1003 {private int sum=0, b=0;private static int inf = (-1)*1<<30;private int s,t;public void dp( int a[],int n){sum = inf ;b = inf ;s=0;t=0;int stemp=0, ttemp = 0;for(int i=0; i<n; i++){if(b>=0){b+= a[i];ttemp = i;}else{b = a[i];stemp = i;ttemp = i;}if(sum < b){sum = b;s = stemp+1;t = ttemp+1;}}}public void solve(){Scanner sc = new Scanner(System.in);int n,c;int a[];n = sc.nextInt();for( int i=1; i<=n;i++){c = sc.nextInt();a = new int[c];for(int j=0; j<c; j++ ){a[j] = sc.nextInt();}dp(a,c);System.out.println("Case "+i+":");System.out.println(sum+" "+s+" "+t);if( i <n){System.out.println();}}}public static void main(String[] args) {new HDU1003().solve();}}
- HDU 1003 求最大子段和的动态规划
- 动态规划求最大子段和
- 动态规划求最大子段和
- 动态规划:求最大子段和
- 动态规划求最大子段和
- 动态规划求最大子段和
- HDU 1003 动态规划 求最大子串和
- 动态规划算法求最大子段和问题
- POJ 2479(动态规划) [求最大子段和 的延伸]
- 求数组的最大子段和,动态规划 时间复杂度O(n)
- 最大子立方和(动态规划求最大子段和三维变形)
- 【HDU 1024】 Max Sum Plus Plus【动态规划求最大M子段和详解-好题 】
- hdu 1003 Max Sum(动态规划求一维最大子段和)
- 动态规划----最大子段和
- 最大子段和(动态规划)
- 最大子段和动态规划实现
- 最大子段和(动态规划)
- 【动态规划】最大m子段和
- 工作中用到的linux命令
- 链表的排序
- SQL初期总结(二)
- ios开发内存管理要点
- 如果不记得oracle各种密码怎么办?
- HDU 1003 求最大子段和的动态规划
- Android:实现带图片和CheckBox的ListView
- How to modify the Header Search Paths In XCode 4
- 向前一步走,时序图生命线新解
- 生产订单的审核
- C 链表的倒置
- 【python学习】之四、面向对象之续
- 腾讯的一道面试题—不用除法求数字乘积
- SQL Server数据类型