Google-Kick Start,ROUND-A,分配:- 跳过测试集
Google-Kick Start, ROUND-A, Allocation:- Test set skipped
我参加了 Kick Start 并尝试了这个问题:
问题
有N栋房子在售。第 i 栋房子需要 Ai 美元购买。您的预算为 B 美元。
最多可以买几套房子?
输入
输入的第一行给出了测试用例的数量,T。接下来是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
我一直在跳过测试集,我只想知道我的代码有什么问题?
是否存在此解决方案不起作用的任何可能的测试集?
有一个问题:如果所有的房子都可以买,代码不打印任何东西。
您可以通过简单地在内部循环之后移动行 print("Case #{0}: {1}".format(case+1, c))
来解决这个问题。
考虑一下这个接受的,
#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) ;
}
}
Here is the tested solution -
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')
当预算足以购买所有房屋时,您的代码将失败。
以下是接受的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]))
#接受码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)))
我参加了 Kick Start 并尝试了这个问题:
问题
有N栋房子在售。第 i 栋房子需要 Ai 美元购买。您的预算为 B 美元。
最多可以买几套房子?
输入
输入的第一行给出了测试用例的数量,T。接下来是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
我一直在跳过测试集,我只想知道我的代码有什么问题?
是否存在此解决方案不起作用的任何可能的测试集?
有一个问题:如果所有的房子都可以买,代码不打印任何东西。
您可以通过简单地在内部循环之后移动行 print("Case #{0}: {1}".format(case+1, c))
来解决这个问题。
考虑一下这个接受的,
#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) ;
}
}
Here is the tested solution -
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')
当预算足以购买所有房屋时,您的代码将失败。
以下是接受的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]))
#接受码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)))