题目:青蛙跳台阶吃虫子,数组arr代表每个台阶有多少个虫子,要求青蛙每次最多跳k个台阶,最多一共跳n次,计算青蛙最多能吃到多少个虫子?
例:arr=[8 10 9 7 17 13] k=2 n=3 max=10+7+17=34
def mostinsects(arr,k,n): #arr 台阶数组 #k 每次最多可以跳的台阶数 #n 最多可以跳的次数 #转移方程 DP[i][j] 代表在第i个台阶跳了j次后能吃到的最多虫子 #DP[i][j]=max(DP[i-1][j-1],DP[i-2][j-1],...,DP[i-k][j-1])+arr[i] DP=[[0 for _ in range(n)] for _ in range(len(arr))] # DP[0][0]=0 for i in range(k): DP[k][0]=arr[k] for i in range(len(arr)): for j in range(2,i): if j>=n: break else: mk=0 for c in range(1,k+1): mk=max(mk,DP[i-c][j-1]) DP[i][j]=mk+arr[i] return max(DP[:][j-1])