Python编程题
1. 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
#青蛙调问题
def fib(n):
if n<=0:
return -1;
elif n==1 or n==2:
return n
else:
return fib(n-1)+fib(n-2)
a=fib(8)
print(a)
2. 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的太极总共有多少中跳法。
#青蛙调问题
deffib(n):
if n<=0:
return -1;
elif n==1:
return 1
else:
return 2*fib(n-1)
a=fib(8)
print(a)
3. 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少中方法。
#矩形覆盖
'''
def cover(number):
if number<=0:
return 0
f0=0
f1=1
fn=f1+f0
i=2
while i<=number:
f0=f1
f1=fn
fn=f0+f1
i=i+1
return fn
print(cover(8))'''
def cover(number):
if number<=0:
return 0
if number==1:
return 1
if number==2:
return 2
return cover(number-1)+cover(number-2)
print(cover(8))
4. 在一个m行n列二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
#杨氏矩阵查找
'''思路:从右上角开始查找,往下是递增的,往左是递减的'''
n=int(input("请输入行数:"))
m=int(input("请输入列数:"))
line=[[0]*m]*n
fori in range(n):
line[i]=input().split(' ')
defget_value(r,s):
return line[r][s]
deffind(number):
row=len(line)-1#行数
column=len(line[0])-1#列数
s=0
t=column#初始值
while s<=row and t>=0:
value1=get_value(s,t)
value=int(value1)
if value==number:
return True
elif value>number:
t=t-1
elif value
s=s+1
return False
if__name__=='__main__':
value=find(5)
print(value)
5.Python链表操作
#链表的操作
classNode:
def __init__(self,data):
self.data=data
self.next=None
classListNode:
def __init__(self):
self.head=None
#建立链表
def insert(self,data):
new=Node(data)
if self.head is None:
self.head=new
else:
node=self.head
while node.next:
node=node.next
node.next=new
#翻转比如1->2->3->4 变成 2->1->4->3
def output(self):
t=self.head.next
while t:
print(t.data)
t=t.next
if__name__=='__main__':
t=ListNode()
t.insert(0)
t.insert(1)
t.insert(2)
t.insert(3)
t.insert(4)
t.output()