首页 > 解决方案 > 为什么这段代码在codingbat上给出错误“超时”?

问题描述

场景:我们想要制作一包“目标”公斤的巧克力。我们有小条(每条 1 公斤)和大条(每条 5 公斤)。返回要使用的小柱的数量,假设我们总是在小柱之前使用大柱。如果无法完成,则返回 -1。

是否有某些情况导致它在无限循环中运行?

def make_chocolate(small, big, goal):
  while goal >= 5 and big > 0:
    goal -= 5
    big -= 1
  if small >= goal:
    return goal
  return -1

标签: pythonloops

解决方案


我建议你使用更多的算术来解决这个问题

def make_chocolate(small, big, goal):
    big_that_can_fit = goal // 5
    big_that_we_use = min(big_that_can_fit, big)
    goal -= big_that_we_use * 5
    if small >= goal:
        return goal
    return -1

通过https://codingbat.com/prob/p190859测试


推荐阅读