一,独一无二的路
从前有一只小小的机器人叫小器,小器站在一个M * N个的格子地板的最左上角,很孤单,世界辣么大,它也想去看看,经过不懈的努力它终于可以(只能)向下或者向右移动啦,它有一个宏伟的愿望就是要穿过格子地板到达右下角的砖,所以如果小器告诉你中号和N,你能不能帮它计算一下这中间可以有多少条独一无二的路径?
代码如下:(递归,个人喜欢,但可能会超出时间)
def way(m,n,i,j):
if i==m or j==n:
return 0
elif i==m-1 and j==n-1:
return 1
elif i==m-1 and j!=n-1:
return way(m,n,i,j+1)
elif i!=m-1 and j==n-1:
return way(m,n,i+1,j)
else:
return way(m,n,i+1,j)+way(m,n,i,j+1)
m=int(input())
n=int(input())
print(way(m,n,0,0))
二,括号配对检测
用户输入一行字符串,其中可能包括小括号(),请检查小括号是否配对正确,配对成功与否分别输出:
配对成功,配对不成功
其中,小括号配对要考虑配对顺序,即()表示配对,)(不是配对,只考虑小括号配对。
代码如下:
def parentheses(temp):
list1=[]
for i in range(len(temp)): #除去其他,剩下(),放在list1
if temp[i]=='(' or temp[i]==')':
list1.append(temp[i])
list2=[] #存放(,相当于栈
if len(list1)==0: #排除明显正确
return True
elif list1[0]==')': #排除明显错误
return False
elif len(list1)%2!=0:
return False
else:
for i in range(len(list1)):
if list1[i]=='(':
list2.append(list1[i])
elif list1[i]==')' and len(list2)!=0:
list2.pop()
else:
return False
return True
temp=input()
if parentheses(temp):
print('配对成功')
else:
print('配对不成功')
三,垂直Hello World
垂直输出“Hello World”,全部代码不超过2行。
代码如下:
print(*'Hello World',sep ='\ n')
四,斐波那契数列计算
斐波那契数列如下:F(0)= 0,F(1)= 1
F(n)= F(n-1)+ F(n-2)
编写一个计算斐波那契数列的函数,采用递归方式,输出不超过的所有斐波那契数列元素。
调用上述函数,完成如下功能:
用户输入一个整数N,输出所有不超过的斐波那契数列元素,输出数列的元素和及平均数,输出按照顺序,用英文逗号和空格分割。
代码如下:
def Fibon(num):
if num==0:
return 0
elif num==1:
return 1
elif num>1:
return Fibon(num-1)+Fibon(num-2)
num=int(input())
list1=[]
for i in range(num+1):
list1.append(Fibon(i))
print(list1[-1],end=', ')
print(sum(list1),sum(list1)//len(list1),sep=', ')
五,3位水仙花数计算
“3位水仙花数”是指一个三位整数,其各位数字的3次方和等于该数本身例如:ABC是一个“3位水仙花数”,则:一个的3次方+ B的3次方+ C的3次方= ABC。
请按照从小到大的顺序输出所有的3位水仙花数,请用一个“逗号+空格”分隔输出结果。
注意:这是一个OJ题目,输出格式要严格一致,最后一位水仙花数后没有逗号。
代码如下:
def Narcissus():
list1=[]
for num in range(100,1000):
a=num//100
b=num//10%10
c=num%10
if num==a**3+b**3+c**3:
list1.append(num)
return list1
str1=', '.join(map(str,Narcissus()))
print(str1)
|