我参加了Kick Start并尝试了以下问题:
问题
有N栋房屋待售。第i座房子要花艾美金购买。您的预算预算为B美元。
您最多可以购买多少间房屋?
输入
输入的第一行给出测试用例的数量,T。每个测试用例均以包含两个整数N和B的一行开始。第二行包含N个整数。第i个整数是Ai,即第i个房子的成本。
输出
对于每个测试用例,输出包含Case #x的一行:y,其中x是测试用例编号(从1开始),y是您可以购买的最大房屋数量。
完整问题:-https://codingcompetitions.withgoogle.com/kickstart/round/000000000019ffc7/00000000001d3f56
这是我的代码
t = int(input())
if 1 <= t <= 100:
for case in range(t):
n, b = map(int, input().split())
a = map(int, input().split())
s, c = 0, 0
for i in sorted(a):
s += i
if s <= b:
c += 1
else:
print("Case #{0}: {1}".format(case+1, c))
break
我一直在跳过测试集,我只是想知道我的代码出了什么问题?
在该解决方案不起作用的地方是否存在任何测试集?
答案 0 :(得分:0)
有一个问题:如果可以购买所有房屋,则代码不会打印任何内容。
您可以通过在内部循环之后移动print("Case #{0}: {1}".format(case+1, c))
行来解决此问题。
答案 1 :(得分:0)
考虑这个已接受的
#include <bits/stdc++.h>
using namespace std ;
int main() {
int t ; cin >> t ;
for(int cs = 1 ; cs <= t ; cs ++) {
int n , b , cnt = 0 ; cin >> n >> b ;
vector<int> a(n) ; for(int i = 0 ; i < n ; i ++) cin >> a[i] ;
sort(a.begin(), a.end()) ;
for(int i = 0 ; i < n ; i ++) {
if(a[i] > b) break ;
else {
b -= a[i] ;
cnt ++ ;
}
}
printf("Case #%d: %d\n", cs, cnt) ;
}
}
答案 2 :(得分:0)
这是经过测试的解决方案-
tc = int(input())
for i in range(tc):
n, budget = map(int, input().split())
prices = list(map(int, input().split()))
prices.sort()
for j in range(n, 0, -1):
if sum(prices[: j]) <= budget:
print("Case #" + str(i+1) + ': ' + str(len(prices[: j])))
break
else: print("Case #" + str(i+1) + ': 0')
答案 3 :(得分:0)
当预算足以购买所有房屋时,您的代码将失败。
以下是可接受的python代码:
n = int(input())
if ((n>=1 and n<=100) or (n>=1 and n<=10**5)):
z = []
for i in range(0, n):
x = [int(w) for w in input().split()]
y = [int(j) for j in input().split()]
y.sort()
a = 0
count = 0
if sum(y) > x[1]:
for k in range(0, len(y)):
if (a == 0 and y[k]>x[1]):
break
elif (a <= x[1]):
a+= y[k]
count+=1
if (a + y[k+1] > x[1]):
break
z.append(count)
else:
z.append(len(y))
for i in range(0, n):
print("Case #"+ str(i+1) +": " + str(z[i]))
答案 4 :(得分:0)
#接受的代码Python
t = int(input())
for j in range(t):
n,b = map(int,input().split())
n = list(map(int, input().split()))
n.sort()
s=0
ans=[]
for i in n:
s = s+i
if s<=b:
ans.append(s)
print("Case #{}: {}".format(j+1,len(ans)))