# -*- coding: UTF-8 -*-
'''
求二项式系数(杨辉三角),
求出n中选r个的组合系数c(n,r),只用加法实现
我写的算法,加法效率漏了点。。。
'''
def ComputCnr(n, r):
listArr=[0]*(r+1) #python有类似动态存储分配的,挺不错的
if r>=n/2:
r=n-r
listArr[0]=1
count=0
for i in range(1, n+1):
upLimit=i
if i>r:
upLimit=r
for j in range(upLimit,0,-1):
count+=1
listArr[j]+=listArr[j-1]
print "%d次加法" %(count)
print "%d" %(listArr[r])
def ComputCnrDesignedByXianJingGuang(n, r):
listArr=[1]*(r+1)
if r>=n/2:
r=n-r
count=0
for i in range(1, n-r+1):
for j in range(1, r+1):
count+=1
listArr[j]+=listArr[j-1]
print "%d次加法" %(count)
print "%d" %(listArr[r])
n=20
r=9
ComputCnr( n, r)
ComputCnrDesignedByXianJingGuang(n, r)
求出n中选r个的组合系数c(n,r),只用加法实现 即 求二项式系数(杨辉三角),
最新推荐文章于 2021-02-15 23:41:08 发布