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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

靠谱杨

感谢您的认可和鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值