这一题使用Java比较容易猜的坑

P1116 车厢重组

%%% J佬
by wmy_goes_to_thu @ 2020-10-17 15:22:43


# 0x0005 补充 使用这样的方法就可以成功的AC了 ![image.png](https://pic.rmb.bdstatic.com/bjh/29ed75c49c7293bba21831b682808bd4.png) --- ### 代码: ```java import java.util.Scanner; //洛谷题目:https://www.luogu.com.cn/problem/P1116 public class Main { /* * 输入格式 共两行。 第一行是车厢总数N N(≤10000)。 第二行是NN个不同的数表示初始的车厢顺序。 输出格式 一个整数,最少的旋转次数。 * */ public static void main(String [] args){ Scanner in = new Scanner(System.in); //踩坑:这里需要用next(),否则在测试点都是RE,因为数字太多的话,机器会分行输入 int num = Integer.valueOf(in.next());//第一个输入是有多少车厢 int[] numsArr = new int[num]; for(int i=0;i<num;i++) { numsArr[i] = Integer.valueOf(in.next());//第二个输入是车厢号 } int times = 0; boolean flag = true; while(flag) { flag = false;//如果所有数字都是排序成功,就结束死循环 for(int i=0;i<num-1;i++) { if(numsArr[i] > numsArr[i+1]) { times ++; //如果i比i+1大,交换 int t = numsArr[i+1]; numsArr[i+1] = numsArr[i]; numsArr[i] = t; flag = true;//有比任何数字大的,继续循环 } } } System.out.println(times); } } ```
by VioletTec @ 2020-10-17 15:23:03


@[wangmaohua20090908](/user/107484) 没办法,只会写Jvav,最近也没时间和精力去学其他语言的语法了 ![image.png](https://pic.rmb.bdstatic.com/bjh/a85abf7e145ba2ebd04ed1d8ac891a75.png)
by VioletTec @ 2020-10-17 15:25:57


实测,加一个scanner.close()能AC 不用改nextInt(); ## 代码如下 ## ```java package com.Learn.JavaSE; import java.util.Scanner; public class draft { public static void main(String [] args){ Scanner in = new Scanner(System.in); int num = in.nextInt(); int[] numsArr = new int[num+5]; for(int i=0;i<num;i++) { numsArr[i] = in.nextInt();//第二个输入是车厢号 } in.close(); int times = 0; boolean flag = true; while(flag) { flag = false;//如果所有数字都是排序成功,就结束死循环 for(int i=0;i<num-1;i++) { if(numsArr[i] > numsArr[i+1]) { times ++; //如果i比i+1大,交换4 int t = numsArr[i+1]; numsArr[i+1] = numsArr[i]; numsArr[i] = t; flag = true;//有比任何数字大的,继续循环 } } } System.out.println(times); } } ```
by scudhd @ 2022-04-12 19:23:17


|