牛客网编程题——合唱团(网易2017)

        这题在编程达人面前应该算是水题,但这算是我第一个做出来的动态规划程序,作为纪念,分享一下。题目链接:

https://www.nowcoder.com/practice/661c49118ca241909add3a11c96408c8?tpId=85&tqId=29830&tPage=1&rp=1&ru=/ta/2017test&qru=/ta/2017test/question-ranking

        简单描述一下题目:有n个学生站成一排,每个学生有一个能力值,需要按顺序选取k名学生,使得k个学生的能力值乘积最大,求该最大值。这里有两个注意点:1、相邻的两名学生在排列中的编号不能超过d(d由题目输入给出);2、学生能力值可以为负。

        一开始我大概知道是个动态规划程序,但确实不知道怎么设计,又看到数据规模很小,并且于是想用暴力法解决,然后就自然而然地超时了。先简单说一下暴力法,就是对每个合唱团的学生,有选它,或不选它两个选项。于是就可以枚举,枚举时需要记录这次访问的人index,已经选择的人数nowK,上一个选的人last(两者差<d时才能走“不选它”的选项),和当前乘积mul。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值