首页 > Alibaba 7.27 笔试
头像
牛客826469552号
编辑于 2020-07-27 20:27
+ 关注

Alibaba 7.27 笔试

第一题
第一题我压根就没看懂题目说的是什么意思...



第二题 就有一个人收藏古董,古董摆在n层的架子上,然后每一层的古董价值各不相同,要挑选出m个古董
1. 每次只能在每一层的两端挑选
2. 使得m个古董的总的价值最大

def main(n, m, value):

    opt = [[0] * (m+1) for i in range(n+1)] # initialize

    for i in range(1, n+1):
        for j in range(1, m+1):
            if j >= 2:
                if len(value[i-1]) >= 2:
                    opt[i][j] = max(opt[i-1][j-1] + value[i-1][0], opt[i-1][j-1] + value[i-1][-1], opt[i-1][j-2] + value[i-1][-1] + value[i-1][0])
                elif len(value[i-1]) == 1:
                    opt[i][j] = max(opt[i-1][j-1] + value[i-1][0])
            else:
                # j = 1
                if len(value[i-1]) >= 2:
                    opt[i][j] = max(value[i-1][0], value[i-1][-1]) + opt[i-1][j-1]
                else:
                    opt[i][j] = value[i-1][0] + opt[i-1][j-1]
    return opt[n][m]


算例
value = [
    [3, 2],
    [1, 4, 1, 5]
]

n = 2
m = 3

return 10


全部评论

(4) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐