hdu 1003 动态规划java语言

来源:互联网 发布:java语言程序设计答案 编辑:程序博客网 时间:2024/06/16 02:20

1003这道题是一道动态规划,如果你不太明白动态规划是什么,你可以看一下这个链接http://blog.csdn.net/woshioosm/article/details/7438834
这道题仔细思考一下的话是这样的:

1.假设我们从数组第一个下标位开始a[0],如果a[0]是一个正数,那么就让maxnum=a[0];然后呢记下这时的开始位置start = i+1;然后我们去找a[1],如果sum=a[1]+a[0]比a[0]大,那么我们就让maxnum = a[1]+a[0];但如果a[1]+a[0]

import java.util.*;public class Main {    public static void main(String[] args) {        int t;        Scanner in = new Scanner(System.in);        t = in.nextInt();        int j=0;        while(in.hasNext())        {            j++;            int n ;            int sum=0,start=0,end=0,tmp=1,maxnum=-1001;            n = in.nextInt();            for(int i=1;i<n+1;i++)            {                sum = sum+in.nextInt();                if(sum>maxnum)                {                    maxnum = sum;                    start = tmp;                    end = i;                }                if(sum<0)                {                    sum = 0;                    tmp = i+1;                }            }            System.out.printf("Case %d:%n%d %d %d%n",j,maxnum,start,end);              if(t>0) System.out.println();         }    }} 
0 0
原创粉丝点击