我开始通过Google Kick Start测试自己的技能,并选择一个过去的问题以查看其工作原理,然后陷入困境。
这是Google Kick Start Round A 2020 Program:Allocation的我的Java代码 我已经通过了所有测试用例,并自行进行了测试,但是当我将代码提交给Google Kick Start竞赛时,我得到了 Sample Failed:WA 我不知道这些问题有什么问题...请帮助我
问题
有N栋房屋待售。第i座房子要花艾美金购买。您的预算预算为B美元。
您最多可以购买多少间房屋? 输入
输入的第一行给出测试用例的数量,T。每个测试用例都从包含两个整数N和B的一行开始。第二行包含N个整数。第i个整数是Ai,即第i个房屋的成本。 输出
对于每个测试用例,输出包含案例号x的一行:y,其中x是测试用例编号(从1开始),y是您可以购买的最大房屋数量。 限制
时间限制:每个测试集15秒。 内存限制:1GB。 1≤T≤100。 1≤B≤10 ^ 5。 对于所有i,1≤Ai≤1000。 测试集1
1≤N≤100。 测试集2
1≤N≤10 ^ 5。 样本
输入
输出
3 4 100 20 90 40 90 4 50 30 30 10 10 3 300 999999999
案例1:2 案例2:3 情况3:0
在示例案例1中,您的预算为100美元。您可以以20 + 40 = 60美元的价格购买第一和第三座房屋。 在示例案例2中,您的预算为50美元。您可以以30 + 10 + 10 = 50美元的价格购买第一,第三和第四座房屋。 在示例案例3中,您的预算为300美元。您无法购买任何房屋(因此答案为0)。
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(new BufferedReader(new InputStreamReader(System.in)));
int testCases = sc.nextInt();
int n;
double b;
int[] a;
int count;
for (int i = 1; i <= testCases; i++) {
n = sc.nextInt();
a = new int[n];
b = sc.nextDouble();
for (int j = 0; j < n; j++) {
a[j] = sc.nextInt();
}
Arrays.sort(a);
count = 0;
for (int j = 0; j < n; j++) {
b = b - a[j];
if (b < 0) {
break;
}
count++;
}
System.out.println(String.format("Case #%d :%d", i, count));
}
}
}
答案 0 :(得分:2)
在输出中,应该使用“案例#%d:%d”而不是“案例#%d:%d”。 小心!