第十三届蓝桥杯大赛软件赛省赛【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 }

 

 

 

posted @ 2022-04-09 19:46  靠谱杨  阅读(218)  评论(9编辑  收藏  举报