首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python方程

Python方程
EN

Stack Overflow用户
提问于 2015-04-02 09:41:45
回答 2查看 1K关注 0票数 0

关于问题:麦当劳以6、9或20 McNuggets的包装出售鸡肉McNuggets。因此,例如,可以恰好购买15 McNuggets (具有一个6的包装和第二个9的包装),但是不可能恰好购买16 McNuggets,因为6、9和20的非负整数组合不等于16。为了确定是否可以恰好购买n McNuggets,必须找到a、b和c的非负整数(可以是0)值,使得6a+9b+20c=n。

解决方案是

代码语言:javascript
复制
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)之间进行选择?

EN

回答 2

Stack Overflow用户

发布于 2015-04-02 09:45:25

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

票数 7
EN

Stack Overflow用户

发布于 2015-04-02 10:07:55

这里的一种方法是生成形式为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,其中可能性是集合。如果需要返回实际的组合,则需要跟踪数字和因子。

例如,54可以用6 9或9 6来满足。38可以用20或者2 9或3 6来满足。:)

祝你玩得开心,并发布你的解决方案。

为了好玩-你可以用多少种方法买180块鸡块?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29403661

复制
相关文章

相似问题

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