andy6804tw
4/10/2017 - 8:09 AM

http://e-tutor.itsa.org.tw/e-Tutor/mod/programming/view.php?id=21811 這題陣列走訪,取得最少時間複雜度用單迴圈就行了,每走訪一個就加到sum,並每次判斷sum是否小於0若成立歸零Math.max()就是比較大

http://e-tutor.itsa.org.tw/e-Tutor/mod/programming/view.php?id=21811

這題陣列走訪,取得最少時間複雜度用單迴圈就行了,每走訪一個就加到sum,並每次判斷sum是否小於0若成立歸零Math.max()就是比較大小函式,比對確認後最後再比目前最大的數字並存入max_sum

import java.util.*;     
     
public class Main {     
     
  public static void main(String[] args) {     
       Scanner scn = new Scanner(System.in);     
       int n=scn.nextInt();  
       while(n--!=0){  
           int num=scn.nextInt(),arr[]=new int[num],max=0;  
           for(int i=0;i<num;i++){  
               arr[i]=scn.nextInt();  
           }  
           int sum=0,max_sum=0;  
           for(int j=0;j<num;j++)  
           {  
               sum+=arr[j];  
               sum=Math.max(0,sum);  
               max_sum=Math.max(max_sum,sum);  
           }  
           System.out.println(max_sum);
       }  
  } 
  
   /*題目:[C_AR130-易] 拉彩金
    作者:1010
    時間:西元 2017 年 4 月 */
}