100道Python程式設計題
阿新 • • 發佈:2019-02-11
1、給定一個最大值n(10>n>=0),求0-n之間的整數可以組成多少個奇數?
分析:
首先分析組成數字的首位:不能為0,可放數字為n個
然後分析末位:必須為奇數,可放數字為odd[1,n]個
最後分析中間位:範圍內任意數字,可放數字為n+1個
def get_odd(n):
first = n
last = len([x for x in range(n+1) if x%2 !=0 ])
sum = last+first*last
if n <2:return sum
for i in range(2,n+1):
middle = (n + 1) ** (i - 1)
sum += first*middle*last
return sum
10、海灘上有一堆桃子,五隻猴子來分。第一隻猴子把這堆桃子平均分為五份,多了一個,這隻猴子把多的一個吃掉,拿走了一份。第二隻猴子把剩下的桃子又平均分成五份,又多了一個,它同樣把多的一個吃掉,拿走了一份,第三、第四、第五隻猴子都是這樣做的,問海灘上原來最少有多少個桃子
def get_min_peaches(n):
i = 1
plus = n*(n-1)
def if_match(ret):
for j in range(n):
modn = (ret - 1 ) % n
if modn != 0:
return False
ret = (ret-1)/n*(n-1)
return True
while True:
if if_match(i):
break
i += plus
return i
11、一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。
def jump_step(n):
result = lambda n: n if n < 2 else 2 * jump_step(n - 1)
return result(n)
100、實現一個二叉樹
class Tree():
def __init__(self,ltree = 0,rtree = 0,data = 0):
self.ltree = ltree
self.rtree = rtree
self.data = data
class BTree():
def __init__(self,base = 0):
self.base = base
def _Empty(self):
if self.base == 0:
return True
else:
return False
def qout(self,tree_base):
if tree_base == 0:
return
print tree_base.data
self.qout(tree_base.ltree)
self.qout(tree_base.rtree)
def mout(self,tree_base):
if tree_base == 0:
return
self.mout(tree_base.ltree)
print tree_base.data
self.mout(tree_base.rtree)
def hout(self,tree_base):
if tree_base == 0:
return
self.hout(tree_base.ltree)
self.hout(tree_base.rtree)
print tree_base.data