首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >谷歌启动2020回合--一个错误的答案

谷歌启动2020回合--一个错误的答案
EN

Stack Overflow用户
提问于 2020-05-05 14:27:00
回答 3查看 3.6K关注 0票数 2

链接到问题:https://codingcompetitions.withgoogle.com/kickstart/round/000000000019ffc7/00000000001d3f56

问题有N栋房子待售。买第一套房子要花艾的钱.你的预算是B美元。你能买的房子的最大数量是多少?

输入输入的第一行给出了测试用例的数量,T测试用例紧随其后。每个测试用例都从包含两个整数N和B的一行开始。第二行包含N个整数。第一个整数是Ai,这是第一所房子的成本.

对每个测试用例输出,输出一行包含用例#x: y,其中x是测试用例号(从1开始),y是您可以购买的房屋的最大数量。

代码语言:javascript
复制
**Limits**
Time limit: 15 seconds per test set.
Memory limit: 1GB.
1 ≤ T ≤ 100.
1 ≤ B ≤ 105.
1 ≤ Ai ≤ 1000, for all i.

**Test set 1**
1 ≤ N ≤ 100.

**Test set 2**
1 ≤ N ≤ 105.

**Sample Input** 
3
4 100
20 90 40 90
4 50
30 30 10 10
3 300
999 999 999

**Sample Output**  
Case #1: 2
Case #2: 3
Case #3: 0

在示例1中,您的预算为100美元。你可以用20 + 40 = 60美元买第一和第三套房子。在第二个例子中,你的预算是50美元。你可以用30 + 10 + 10 = 50美元买第一、第三和第四套房子。在示例3中,您的预算为300美元。你不能买任何房子(所以答案是0)。

下面是我的解决方案(Python 3):

代码语言:javascript
复制
T = int(input())

res = []
for i in range(T):
    N, B = map(int, input().split(' '))
    ai = list(map(int, input().split(' ')))
    ai.sort()
    for k in range(len(ai)):
        B = B - ai[k]
        if B < 0:
            res.append(k)
            break
        elif k == len(ai)-1:
            res.append(k+1)

for i in range(T):
    print("Case #", i+1, ":", res[i])

我已经尝试了所有我能想到的测试用例,并且我得到了预期的输出。但是当我尝试提交时,它说样本失败了:错误的答案。请告诉我我的解决方案到底出了什么问题,以及如何加以改进。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-05-12 23:36:54

我建议简化您的代码,并确保使用字符串格式。如果是python3.6或更高版本,则可以使用f-string或使用string.format。

代码语言:javascript
复制
# your second for loop
counter = 0
for k in ai:
    if B - k >= 0:
        B -= k
        counter += 1
    else:
        res.append(counter)
        break

for i in range(len(res)):
    # using f-string
    print(f"Case #{i+1}: {res[i]}")
    # using string format
    print("Case #{}: {}".format(i+1, res[i]))
票数 3
EN

Stack Overflow用户

发布于 2020-05-12 22:55:56

我认为问题是在你上一份打印声明中,你有:

代码语言:javascript
复制
>>> print("Case #", i+1, ":", res[i])
Case # 0 : 2

注意,在"#“之后和":”之前有一个比竞争指定的空间更多的空间。尝试:

代码语言:javascript
复制
>>> print("Case #", i+1, ": ", res[i], sep="")
Case #0: 2
票数 4
EN

Stack Overflow用户

发布于 2020-08-20 08:40:17

在Python3中

这个解决方案

代码语言:javascript
复制
n = int(input())
h = []
for i in range(n):
    N, B = map(int,input().split())
    B = int(B)
    d = []
    a = 0
    n = sorted(list(map(int,input().split()[:N])))
    for j in n:
        if j <= B:
            B = B-j
            a+=1
    h.append("Case #{}: {}".format(i+1,a))
for i in h:
print(i)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61615455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档