首页 > 编程语言 > 详细

字节算法面试的一道DP题

时间:2019-12-14 01:14:29      阅读:142      评论:0      收藏:0      [点我收藏+]

题目:青蛙跳台阶吃虫子,数组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])

字节算法面试的一道DP题

原文:https://www.cnblogs.com/ldadaqiong/p/12037668.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!