andy6804tw
6/13/2017 - 2:49 PM

http://e-tutor.itsa.org.tw/e-Tutor/mod/programming/view.php?id=36527 這題就往陣列去想把左邊起點和右邊起點想像成一個一為陣列的範圍 在這之中先把陣列大小找出來max 最後依序把範圍內的值若大於原本的舊覆蓋過去

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

這題就往陣列去想把左邊起點和右邊起點想像成一個一為陣列的範圍 在這之中先把陣列大小找出來max 最後依序把範圍內的值若大於原本的舊覆蓋過去 arr[ 12 ] 0~8=>5 6~8=>10 10~12=>10 5 5 5 5 5 5 10 10 10 0 10 10 10

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 k=scn.nextInt(),max=0,arr[][]=new int[k][3];
    	   for(int i=0;i<k;i++){
    		   arr[i][0]=scn.nextInt();arr[i][1]=scn.nextInt();arr[i][2]=scn.nextInt();
    		   if(arr[i][1]>max)
    			   max=arr[i][1];
    	   }
    	   int ary[]=new int[max+1];
    	   for(int i=0;i<k;i++){
    			 for(int j=arr[i][0];j<=arr[i][1];j++){
    				 if(ary[j]<arr[i][2])
    					 ary[j]=arr[i][2];
    			 }
    	   }
    	   for(int i=0;i<=max;i++){
    		   if(i!=0)
    			   System.out.print(" ");
    		   System.out.print(ary[i]);
    	   }
    	   System.out.println();
       }
  } 
  /*題目:[C_AR201-易] 城市地圖
    作者:1010
    時間:西元 2017 年6 月 */
}