m0_61558674 2022-01-17 21:35 采纳率: 50%
浏览 58
已结题

python关于书架问题

共有 N 头奶牛(1 ≤ N ≤ 20,000),每头奶牛有自己的高度 Hi(1 ≤ Hi ≤ 10,000),N 头奶牛的总高度为 S。书架高度为B(1 ≤ B ≤ S < 2,000,000,007).
为了帮助John到达书架顶层,找出使用奶牛数目最少的解决方案。

输入格式
第 1 行:空格隔开的整数 N 和 B;

第 2 ~ N+1 行:第 i+1 行为整数 Hi

输出格式
能达到书架高度所使用奶牛的最少数目。

img

因为不会贪心,所以自己写了个代码,测试样例没问题,但其它测试有问题。自己改了很多次,还是没有找到主要问题,不知道怎么去修改。请高人指点,如能附上代码更好


t,b = map(int,input().split())
ls = []
cot = 0
s = 0
for i in range(t):
    n = int(input())
    ls.append(n)
    m = max(ls)
    cot+=m #相加最大值,并删除,继续循环
    ls.remove(m)
    if cot<=b:
        s +=1
if cot>=b:#直到达到高度,输出
    print(s)







        
  • 写回答

2条回答 默认 最新

  • 陈年椰子 2022-01-18 09:15
    关注

    大概写了一下,看看是不是这样

    
    t, b = map(int, input("Input T   B\t").split())
    ls = []
    cot = 0
    s = 0
    # 输入奶牛信息
    for i in range(t):
        n = int(input("Input Cow {}\t".format(i+1)))
        ls.append(n)
    
    # 先把奶牛按高度排序
    ls.sort(reverse=True)
    #print(ls)
    
    items = []
    for i in range(t):
        items.append(ls[i])
        cot += ls[i]
        if cot >= b:
            break
    
    #输出奶牛数和合计高度
    print("nums",len(items), 'high', sum(items))
    #输出选择的奶牛列表
    print(",".join([str(n) for n in items]))
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月19日
  • 已采纳回答 1月19日
  • 修改了问题 1月19日
  • 创建了问题 1月17日

悬赏问题

  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本