hdu 1003 動態規劃java語言

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(); 
        }
    }
} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章