漸化式を利用したコンビネーションの計算
#combi.py #! usr/bin/env python # -*- coding :utf-8 -*- import sys #calculate combination (n,r) num = raw_input("Set n: ") repeated = raw_input("Set r: ") if num < repeated: print "input error" #Recurrence relation formula combi = int(num) #initializiing if repeated == 0:#definition of (n,0) combi = 1 for r in range(2,int(repeated)+1): combi = ((int(num)-r+1) * combi) / r print "combination (n,r) = ", combi
こうやるらしい。
from operator import mul def perm(n, m): divs = [reduce(mul, [n - i for i in range(j)], 1) for j in range(m + 1)] total = divs[-1] for x in xrange(total): yield [x % divs[i + 1] / divs[i] for i in range(m)]