我正在试用Google kickstart编辑器,由于某种原因,我遇到运行时错误,有人可以帮我吗?这是我第一次尝试Compitetaive编程。
问题有N栋房屋待售。第i座房子要花艾美金购买。您的预算为B美元。
您最多可以购买多少套房屋?
输入输入的第一行给出了测试用例的数量,T。每个测试用例都从包含两个整数N和B的一行开始。第二行包含N个整数。第i个整数是Ai,即第i个房屋的价格。
输出对于每个测试案例,输出一行包含案例#x:y,其中x是测试案例编号(从1开始),而y是您可以购买的最大房屋数量。
限制时间限制:每个测试集15秒。内存限制:1GB。1≤T≤100。1≤B≤105。对于所有i,1≤Ai≤1000。
测试集11≤N≤100。
测试集21≤N≤105。
import java.util.*;
class sample{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int no=sc.nextInt();
for(int j=0;j<no;j++) {
int n=sc.nextInt();
int b=sc.nextInt();
int[] a=new int[n];
for(int i=0;i<n;i++) {
a[i]=sc.nextInt();
}
int sum=0;
int count=0;
for(int i=0;i<n;i++) {
if(sum<b) {
sum+=a[i];
if(sum>b) {
sum-=a[i];
count--;
}
count++;
}
}
System.out.println("case #"+(j+1)+": "+count);
}
}
}
经历过,兄弟,我已经解决了
import java.util.Collections;
import java.util.Scanner;
class Solution {
private static long N;
private static long A;
private static long B;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
for (long i = 0; i < N; i++) {
A = sc.nextInt();
B = sc.nextInt();
ArrayList<Integer> houses = new ArrayList<Integer>();
for (long j = 0; j < A; j++) {
houses.add(sc.nextInt());
}
long no_of_houses = findTheHouses(houses,B);
System.out.println("Case #"+ (i+1) +": "+no_of_houses);
}
sc.close();
}
private static long findTheHouses(ArrayList<Integer> houses, long max_cost) {
Collections.sort(houses);
long count_budget =0;
int houses_count=0;
do{
count_budget = count_budget +houses.get(houses_count);
if(count_budget<=max_cost)
houses_count++;
else
break;
}while(houses.size()>houses_count);
return houses_count;
}
}