我为Google Kickstart 2020 Round A编写了一个程序,但显示出错误的答案,并且跳过了测试集。 这就是问题
问题
有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。 测试集1
1≤N≤100。 测试集2
1≤N≤105。 样本
输入
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)。
注意:与以前的版本不同,在Kick Start 2020中,所有测试集都是可见的判决测试集,这意味着您在提交时会收到即时反馈。
我的代码是
T = int(input())
caselist = []
for i in range(T):
x = input()
x = x.split()
N = int(x[0])
B = int(x[1])
l = input()
l = l.split()
temp = []
for j in l:
temp.append(int(j))
temp.sort()
s = 0
n = 0
for k in temp:
s+=k
if s<=B:
n+=1
else:
print('Case #'+str(i+1)+': '+str(n))
break
请帮我解决这个问题。 谢谢!
答案 0 :(得分:2)
代码的问题是,如果您可以购买所有房屋,则不打印答案,因为只有总成本超过预算时才打印。可以通过在程序结尾将循环中的打印语句移出循环来轻松解决此问题。
答案 1 :(得分:0)
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ar array
int n, b, a[100000];
void solve()
{
cin >> n >> b;
for(int i=0; i<n; ++i)
cin >> a[i];
sort(a, a+n);
int ans=0;
for(int i=0; i<n; ++i) {
if(b>=a[I])
{
b-=a[i];
++ans;
}
}
cout << ans << "\n";
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int t, i=1;
cin >> t;
while(t--) {
cout << "Case #" << i << ": ";
solve();
++i;
}
}
答案 2 :(得分:0)
使用JAVA的KickStart 2020 Round A(分配问题解决方案)
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;
}
}
答案 3 :(得分:0)
tt = int(输入()) 对于范围(tt)中的test_cases: 数字,预算=列表(map(int,input()。split())) 打印(数字,预算)
price = []
cart = []
count = 0
for h in range(number):
price.append(int(input()))
for x in price:
if x <= budget:
cart.append(x)
cart.sort()
our_sum = sum(cart)
for y in cart:
count+=1
if our_sum <= budget:
print("Case #",test_cases,": ",count)
答案 4 :(得分:0)
tests = int(input())
out = []
for i in range(tests):
inp = input().split(" ")
num = int(inp[0])
b = int(inp[1])
prices = input().split(" ")
for i in range(num):
prices[i] = int(prices[i])
prices.sort()
count = 0
for i in range(num):
if(b-prices[i] >= 0 ):
b = b - prices[i]
count = count+ 1
out.append(count)
for i in out:
print(i)
答案 5 :(得分:0)
const mongoose = require('mongoose');
const cartSchema = new mongoose.Schema({
user: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true },
cartItems: [
{
product: { type: mongoose.Schema.Types.ObjectId, ref: 'Products', required: true },
quantity: { type: Number, default: 1 }
}
]
}, {timestamps: true});
module.exports = mongoose.model('Cart', cartSchema);
通过了样品和两个测试
答案 6 :(得分:-1)
i = int(input())
num = []
for j in range(i):
l = input()
x , y = l.split()
y = int(y)
m = input()
p =[]
p = m.split(" ")
sum = 0
count = 0
s = []
for w in p:
w = int(w)
s.append(w)
s = sorted(s)
for q in s:
q = int(q)
if sum+q <= y:
sum += q
count+=1
r = count
num.append(r)
i = 0
for op in num:
i +=1
j = "Case #"+str(i)+": "
print(j,end="")
print(op)