phfb.net
当前位置:首页 >> python计算组合数 >>

python计算组合数

from itertools import productfor i in product(range(2),repeat=6):print i

import math m = int(input("请输入第一个数字:")) n = int(input("请输入第二个数字:")) if m < 0 or n < 0 or m - n < 0:print("负数是没有阶乘,请重新输入!") else:result = math.factorial(m) / math.factorial(n) / math.factorial(m - n) print("按照公式C(m, n) = m!/n! /(m - n)!,C({0},{1})的答案为 {2}".format(m, n, result))

n,a=eval(input()) s=1 for i in range(1,n+1):s=s*i for k in range(1,n):ak=a**k aj=a**(k+1) if s%ak==0 and s%aj!=0:break print(k)

from itertools import productfor i in product(range(2),repeat=6): print i

因为递归到1的时候当然不需要继续递归了,直接返回1就好了 比如3! 第一次递归 3*a(3-1) 第一次递归 2*a(2-1) 第一次不递归了 return 1 这样才能形成 3*2*1 的结构 阶乘递归就这个原理,你再测试一下..

PERMUT 函数返回从给定数目的对象集合中选取的若干对象的排列数.COMBIN 函数返回从给定数目的对象集合中提取若干对象的组合数.

>> from itertools import combinations, permutations>> permutations([1, 2, 3], 2)<itertools.permutations at 0x7febfd880fc0> # 可迭代对象 >> list(permutations([1, 2, 3], 2)) #排列 [(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)] >> list(combinations([1, 2, 3], 2)) #组合 [(1, 2), (1, 3), (2, 3)]

A = ['name1','name2','name3']B = [78,95,85]C = [60,88,99]D = [90,85,100]index = len(A)for i in range(index): print A[i],B[i],C[i],D[i]

def C(n,m): if m > n : return 0 elif m == 1: return n elif n == 1: return 1 else: return C(n-1,m-1)+C(n-1,m)print(C(5,1)) # 5print(C(5,2)) # 10print(C(5,3)) # 10print(C(5,4)) # 5print(C(5,5)) # 1

用count()方法,正好满足你的要求.比如:补充:count方法在python中是各种类型对象一般都有的方法,仿照上面的代码就行.格式:对象名.count(你想计算其出现次数的元素)

网站首页 | 网站地图
All rights reserved Powered by www.phfb.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com