码迷,mamicode.com
首页 > 编程语言 > 详细

字节算法面试的一道DP题

时间:2019-12-13 23:58:23      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:div   style   bre   col   次数   else   for   max   面试   

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

标签:div   style   bre   col   次数   else   for   max   面试   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!