第十三屆藍橋杯大賽軟件賽省賽【Java 大學B 組】試題D: 最少刷題數


 

 

 1 import java.util.ArrayList;  2 import java.util.Scanner;  3 
 4 public class Main {  5     public static void main(String args[]) {  6 // System.out.println("請輸入一個正整數N");
 7         Scanner sc = new Scanner(System.in);    //初始化Scanner對象
 8         int numN=sc.nextInt();            //輸入
 9         ArrayList myNum= new ArrayList(); 10         ArrayList res= new ArrayList(); 11 // System.out.printf("依次輸入%d個整數\n",numN);
12         for (int i = 0;i<numN ;i++ ) { 13             int tempNum=sc.nextInt(); 14  myNum.add(tempNum); 15             res.add(tempNum);        //保存排序之前的數據
16  } 17 // System.out.println("排序之前的數據:"+myNum.toString()+res.toString());
18         if(numN%2==0) { 19 // System.out.println("偶數"); 20             //從小到大排序:
21             int tempNum=0; 22             for(int i=0;i<numN;i++) { 23                 for (int j=i+1;j<numN;j++) { 24                     int i_num=(int) myNum.get(i); 25                     int j_num=(int) myNum.get(j); 26                     if(i_num>j_num) { 27                         tempNum=i_num; 28  myNum.set(i, j_num); 29  myNum.set(j, tempNum); 30  } 31  } 32  } 33 // System.out.println("排序之后的數據:"+myNum.toString()+res.toString()); 34 // System.out.println(myNum.toString()); 35             //開始計算 結果保存在res數組中 下面是偶數情況:
36             for (int i=0;i<numN ; i++) 37  { 38                 int zwNum=(int) myNum.get(numN/2); 39                 int resTempNum=(int) res.get(i);        //保存當前數據
40                 if((resTempNum==zwNum) || (resTempNum>zwNum)) { 41                             res.set(i, 0); 42                 }else { 43                     res.set(i, zwNum-resTempNum+1); 44  } 45  } 46         }else { 47 //---------------------------------------------------------------------- 48 // System.out.println("奇數"); 49             //從小到大排序:
50             int tempNum=0; 51             for(int i=0;i<numN;i++) { 52                 for (int j=i+1;j<numN;j++) { 53                     int i_num=(int) myNum.get(i); 54                     int j_num=(int) myNum.get(j); 55                     if(i_num>j_num) { 56                         tempNum=i_num; 57  myNum.set(i, j_num); 58  myNum.set(j, tempNum); 59  } 60  } 61  } 62 // System.out.println("排序之后的數據:"+myNum.toString()+res.toString()); 63             //開始計算 結果保存在res數組中 下面是奇數情況:
64                 for (int i=0;i<numN ; i++) 65  { 66                     int zwNum=(int) myNum.get(numN/2); 67                     int resTempNum=(int) res.get(i);        //保存當前數據
68                     if((resTempNum==zwNum) || (resTempNum>zwNum)) { 69                                 res.set(i, 0); 70                     }else { 71                         res.set(i, zwNum-resTempNum+1); 72  } 73  } 74  } 75         //輸出結果
76  System.out.println(res.toString()); 77  } 78 }

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM