提示:
穷举算法案例-百钱买百兔及其python实现
百钱买百兔
问题与基本python代码
已知:公鸡5元一只,母鸡3元一只,小鸡一元3只。现用100元钱买了100只鸡。
问:公鸡母鸡小鸡各几只?
for i in range(100):
for j in range(100):
for z in range(100):
num=i+j+z
money=i*5+j*3+z*(1/3)
if z%3==0:
if num==100:
if money==100:
print("this are %d ck,%d hen and %d child"%(i,j,z))
上述算法的时间复杂度T(n)=n3(拓展为n钱买n兔)。
改进的穷举法
for i in range(20):
for j in range(33):
z=100-i-j;
num=i+j+z
money=i*5+j*3+z*(1/3)
if z%3==0:
if num==100:
if money==100:
print("this are %d ck,%d hen and %d child"%(i,j,z))
上述算法的时间复杂度T(n)=(1/15)*n2(拓展为n钱买n兔)。
不仅降低了系数,更是直接降低一个幂数。