改变接受控制台输入方式:使用BufferedRead代替Scanner。
例如PAT1020 月饼,此题需采用一些循环,且接受字符串较多,故耗时较大。而接收方式若设定为Scanner则很容易超时,代码如下:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
//1.接收第一行的种类数N与市场最大需求D
Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine();
String[] split = line.split("\\s+");
int N = Integer.parseInt(split[0]);
int D = Integer.parseInt(split[1]);
/*System.out.println(N);
System.out.println(D);
System.out.println("");*/
//2.接收第二行的N中月饼的含有量 —— 放入数组中 mooncakes[]
String line2 = scanner.nextLine();
double[] mooncakes = new double[N];
String[] split1 = line2.split("\\s+");int m = 0;
for (String o : split1) {
mooncakes[m] = Double.parseDouble(o);
m++;
//System.out.println(o);
}
//3.接受第三行的对应月饼总售价 —— 放入另一个整型数组中 price[]
String line3 = scanner.nextLine();
double[] price = new double[N];int j = 0;
String[] split2 = line3.split("\\s+");
for (String o : split2) {
price[j] = Double.parseDouble(o);
j++;
//System.out.println(o);
}
scanner.close();
//按照他们的单价来冒泡排序(从高到低)
bubble(price, mooncakes);
/*//测试他们的情况
System.out.println("反转后");
for (Object o : price) {
System.out.print(o+" ");
}
System.out.println("");
for (Object o : mooncakes) {
System.out.print(o+" ");
}*/
//所卖的所有钱
double all_money = 0.0;
//4.循环开始出售月饼
// 然后从高到低开始 卖掉