Python3 求高手指教,只有第一个点过,逻辑很简单不知问题在哪。

P1478 陶陶摘苹果(升级版)

pissingboy @ 2019-10-13 14:00:06

A = input().split()
n = int(A[0])
s = int(A[1])
B = input().split()
a = int(B[0])
b = int(B[1])
apple_list = [] # 建立苹果和所需力气的列表
strong_list = [] # 建立能够摘到苹果的力气列表
Num = 0
for i in range(n): # 输入苹果与力气的数组
    la = input().split()
    apple_list.append(la) #追加输入苹果与力气元素
for j in range(n): #由苹果与力气的列表中筛选能够够着到的苹果元素,将其力气元素追加入力气列表中
    if int(apple_list[j][0]) <= a + b:
        strong_list.append(apple_list[j][1])
strong_list.sort() # 对力气列表升序排序
for k in range(len(strong_list)): # 对力气列表元素顺序求和
    Num += int(strong_list[k])
    if Num == s: #当剩余力气等于求和结果时中断循环,返回结果为k+1,因为k起始值为0
        print(k+1)
        break
    if Num > s: #当剩余力气小于求和结果时,中断循环,返回结果为k。
        print(k)
        break

by wuzhaoxin @ 2019-10-13 14:23:02

@pissingboy 你这个假如能摘的可以全部摘掉的话是不是没有输出


by pissingboy @ 2019-10-13 14:36:51

明白你的意思了,我再试试


by pissingboy @ 2019-10-13 14:46:14

增加了一句

    if k == len(strong_list)-1 and Num < s:
        print(k+1)

还是不能过


by pissingboy @ 2019-10-14 10:56:07

@wuzhaoxin 又发现一个问题,就是力气列表为空的时候没有考虑。修改后还只是过了两个点。


by wuzhaoxin @ 2019-10-14 14:15:10

@pissingboy 你sort的时候是按字典序sort的。。。


by pissingboy @ 2019-10-14 19:52:42

@wuzhaoxin 非常感谢,一语惊醒梦中人,总算通过了,按字典排序 112是排在12前面的,原来没注意到,再次感谢!!


|