Python方程

2024-10-01 00:19:49 发布

您现在位置:Python中文网/ 问答频道 /正文

对于这个问题:麦当劳销售的麦鸡块是6块、9块或20块。因此,举例来说,它是有可能买整整15个麦金块(其中一个包是6个,第二个包是9个),但不可能正好买16个麦金块,因为没有非负整数组合的6,9和20加起来等于16。为了确定是否可以购买n个麦克金块,必须找到a、b和c的非负整数(可以是0),使6a+9b+20c=n。在

解决办法是

def McNuggets(n):

    if n == 0:
       return True
    if n < 0:
       return False

    return McNuggets(n-6) or McNuggets(n-9) or McNuggets(n-20)

Python如何在McNuggets(n-6)、McNuggets(n-9)和McNuggets(n-20)之间进行选择?在


Tags: orfalsetruereturnifdef整数解决办法
2条回答

这里的一种方法是生成6a+9b+20c形式的整数set,其中a、b、c的范围从0到n,其中n=目标除以6、9或20。在

例如,如果n=31,那么为6*a+9*b+20*c生成一个set,对于范围内的a(31/6)、b在范围内(31/9)和c在范围内(31/20)。在

如果你觉得更容易的话,你可以生成一个列表,而不是一个集合。在

然后返回n in possibilities,其中probabilities是集合。如果需要返回实际的组合,则需要跟踪数字和因子。在

例如,54可以由69或96来满足。38可以由20和29或36来满足。。。:)

玩得开心点,贴出你的解决方案。在

为了好玩-有多少种方法可以买180块金块?在

它不会在它们之间“选择”。它会评估所有这些。您正在对它们使用逻辑or运算符,这意味着如果其中任何一个返回True,则其计算结果为True。在

相关问题 更多 >