杨辉三角形
def fun(n):
list_1=[[1]*n for i in range(n)]#相当于创建二维数组
for i in range(n):
for j in range(i+1):
if(i==j or j==0):
list_1[i][j]=1
else:
list_1[i][j]=list_1[i-1][j]+list_1[i-1][j-1]
a=max(list_1[-1])
s=0
while(a>0):
s+=1
a//=10
for i in range(n):
if(i<n-1):
print(' '*s*(n-1-i),end='')
for j in range(i+1):
print("%*d"%(s,list_1[i][j]),end=' '*s)#print("{:^}")也可用于居中但是要知道明确的位数
print('\n')
n=int(input())
fun(n)
节点选择
def dfs(node,pre):
global value,table
for i in table.get(node):
if i !=pre:
dfs(i,node)
value[node][0]+=max(value[i][0],value[i][1])
value[node][1]+=value[i][0]
def main():
global value, table
n = int(input())
value = list(map(int, input().split()))
value = list(map(lambda x:[0,x],value))
value.insert(0,0)
table = {}
for i in range(n):
table.update({i + 1: []})
for i in range(n - 1):
father, child = list(map(int, input().split()))
table.get(father).append(child)
table.get(child).append(father)
print(table)
dfs(1,0)
print(max(value[1][0],value[1][1]))
if __name__=='__main__':
main()
耐摔指数
K好数
def add_1(num,x,y=0):
num[y]+=1
if(num[y]<x):
return num
else:
for i in range(y,len(num)):
if num[i]==x and i!=(len(num)-1):
num[i]=0
num[i+1]+=1
if(num[i+1]<x):
break
elif i==(len(num)-1):
num[i]=0
num.append(1)
break
return num
def check(num):
for i in range(len(num)):
if i==0:
if abs(num[0] - num[1]) == 1:
return [0,0]
elif i==len(num)-1:
if abs(num[i] - num[i - 1]) == 1:
return [i-1,0]
elif abs(num[i]-num[i+1])==1:
return [i,0]
return [0,1]
def main():
K,L=input().split()
K=int(K)
L=int(L)
if L==1:
print(K)
exit()
num=[ 0 for i in range(L)]
num[-1]=1
ans=0
while(len(num)==L):
index,judge=check(num)
if judge:
ans+=1
add_1(num, K)
else:
add_1(num,K,index)
print(ans)
if __name__=='__main__':
main()
Leetcode上的练习题(六道)
509.斐波那契数
1137.第 N 个泰波那契数
70.爬楼梯
746.使⽤最⼩花费爬楼梯
121.买卖股票的最佳时机
1143.最⻓公共⼦序列