##language:zh #pragma section-numbers off ##含有章节索引导航的 ZPyUG 文章通用模板 <> ## 默许导航,请保留 <> = 若干个分数相加和恰好为1 = {{{ deepen099 deepen099@163.com 发件人当地时间: 发送时间 19:45 (GMT-08:00)。发送地当前时间:上午5:36。 ✆ 回复: python-cn@googlegroups.com 主题: [CPyUG] 关于若干个分数相加和恰好为1的组成方案 }}} ##startInc == 问题 == 假如我们现在有1/2,1/3,1/4,1/5,1/6,1/8,1/10,1/12,1/15九个分数,将其中的若干个分数相加使和恰好为1,我没有 想出好的办法来,我想的是用一个7重循环,使用蛮力法解决,虽然计算的次数并不多,只有512次,但是觉得不好,请问大家有好的方案吗? === HYRY === {{{ HYRY ruoyu0088@gmail.com 发件人当地时间: 发送时间 20:07 (GMT-08:00)。发送地当前时间:上午5:37。 ✆ }}} 试试下面的程序,python自带了排列组合的函数,直接用就好了。 {{{ #!python from itertools import chain, combinations from fractions import Fraction numbers = [2,3,4,5,6,8,10,12,15] for n in chain(*(combinations(numbers,i) for i in xrange(len(numbers)))): n = [Fraction(1, x) for x in n] if sum(n) == 1: print " + ".join(str(x) for x in n)}}} ##endInc ---- '''反馈''' 创建 by -- ZoomQuiet [<>]