1.
n = int(input(''))
arr = []
for i in range(n):
arr.append([])
for j in range(i+1):
if j == 0 or i == j:
arr[i].append(1)
else:
arr[i].append(arr[i-1][j-1] + arr[i-1][j])
print(" ".join(str(a) for a in arr[i]))
2.
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()
3.
import sys
if __name__ == '__main__':
# 手机数k,楼层高h, 次数n
phone = 3
height = int(input())
# 1.创建dp数组(表格)[横轴h][纵轴k]
dp = [[0 for h in range(height)] for k in range(phone)]
# 2.填充第一行[k=1, h变, n=h]
for h in range(height):
dp[0][h] = h+1
# 3.填充第一列[k变, h=1, n=1]
for k in range(phone):
dp[k][0] = 1
# 4.根据公式求取其它值
for h in range(1, height):
for k in range(1, phone):
minNum = sys.maxsize
for t in range(1, h+1):
minNum = min(minNum, 1 + max(dp[k-1][t-1], dp[k][h-t-1]))
dp[k][h] = minNum
print(dp[phone-1][height-1])
4.
K,L=list(map(int,input().split()))
num=[[0 for i in range(L)] for j in range(K)]
for i in range(K):
num[i][0]=1
for j in range(L-1):
for i in range(K):
tmp=0
for k in range(K):
if k==i or abs(k-i)!=1:
tmp+=num[k][j]
num[i][j+1]=tmp
ans=0
for i in range(1,K):
ans+=num[i][L-1]
print(ans%1000000007)
5.
nterms = int(input("你需要几项?"))
n1 = 0
n2 = 1
count = 2
if nterms <= 0:
print("请输入一个正整数。")
elif nterms == 1:
print("斐波那契数列:")
print(n1)
else:
print("斐波那契数列:")
print(n1,",",n2,end=" , ")
while count < nterms:
nth = n1 + n2
print(nth,end=" , ")
# 更新值
n1 = n2
n2 = nth
count += 1
6.
class Solution:
def tribonacci(self, n: int) -> int:
t=[0]*38
t[0],t[1],t[2]=0,1,1
for i in range(3,n+1):
t[i]=t[i-1]+t[i-2]+t[i-3]
return t[n]
7.
class Solution(object):
def climbStairs(self, n):
"""
:type n: int
:rtype: int
"""
if n == 1:
return 1
elif n == 2:
return 2
else:
a = self.climbStairs(n-1)
b = self.climbStairs(n-2)
return a + b
8.
class Solution(object):
def minCostClimbingStairs(self, cost):
a , b = 0 , 0
for i in range(2,len(cost)+1):
a , b = b, min(a+cost[i-2],b+cost[i-1])
return b
9.
class Solution:
def maxProfit(self, prices: List[int]) -> int:
if len(prices) == 0:
return 0
profit = 0
for i in range(len(prices)-1):
if prices[i+1] > prices[i]:
profit += (prices[i+1] - prices[i])
return profit
10
def lcs(a,b):
lena=len(a)
lenb=len(b)
c=[[0 for i in range(lenb+1)] for j in range(lena+1)]
flag=[[0 for i in range(lenb+1)] for j in range(lena+1)]
for i in range(lena):
for j in range(lenb):
if a[i]==b[j]:
c[i+1][j+1]=c[i][j]+1
flag[i+1][j+1]='ok'
elif c[i+1][j]>c[i][j+1]:
c[i+1][j+1]=c[i+1][j]
flag[i+1][j+1]='left'
else:
c[i+1][j+1]=c[i][j+1]
flag[i+1][j+1]='up'
return c,flag
def printLcs(flag,a,i,j):
if i==0 or j==0:
return
if flag[i][j]=='ok':
printLcs(flag,a,i-1,j-1)
print(a[i-1],end='')
elif flag[i][j]=='left':
printLcs(flag,a,i,j-1)
else:
printLcs(flag,a,i-1,j)
a='ABCBDAB'
b='BDCABA'
c,flag=lcs(a,b)
for i in c:
print(i)
print('')
for j in flag:
print(j)
print('')
printLcs(flag,a,len(a),len(b))
print('')