根据Permituation和combination

时间:2017-10-06 15:58:25

标签: python combinations permutation

我在python中编写一个程序,找不到系列组合

有一个骰子有6个面孔。

用户输入2

然后显示出的是没有计算两个组合的计数

如果我们掷骰子得到2作为总和,最多是两个掷骰子是必需的

(1+1) and (2) so count is 2

如果我掷出3的总和,那么输出就是

(1+1+1),(1+2),(2+1),(3) so count is 4 enter code here

如果我掷出4的总和那么输出就是

(1+1+1+1),(1+1+2),(1+2+1),(2+1+1),(2+2),(3+1),(1+3),(4) count is 8

我写的代码是

# I am considering the Board is horizontal single line

def count_values(values,num):
    for i in range(num):
        print(values[i]," ",end='')
    print('')

def print_list(out_put,values,num,count=0,show=False):
    dice=6
    if num == 0:
        count_values(values,count) 
        out_put[0] += 1
    elif num > 0:
        for k in range(1,dice+1):
            values[count] = k
            print_list(out_put,values,num-k, count+1,show)

n=int(input('Enter A number'))

values=[0]*n
out_put=[0]
print_list(out_put,values,n)
print(out_put)

它显示了小投入的投放,例如10,20,30 但 我希望输出100和500和610像输入, 但是获得更多时间(大约5-6小时仍在运行)并且组合计数超过1145201564 还在计算 任何人都有解决方案

任何人都有任何解决方案。为此

1 个答案:

答案 0 :(得分:0)

import numpy

def findway(m,n,x):
    table = numpy.zeros((2,x+1))
    for j in range(1,x+1):
            table[1][j] = 1

    for j in range(1,x+1):
            for k in range(1,j):
                    table[1,j] += table[1][j-k]

    print table[1][x]

n=input('Enter a number')
findway(6,1,n)

但是这里也有一个问题,我想要输出600,但它显示格式输出(2.07475778444e + 180) 但我想以整数格式