第2关:最强战队
绿盟和各大名企合作,举办编程能力大赛,需要选拔一支参赛队伍。队伍成员全部来自“绿盟杯”中表现优秀的同学,每个同学都根据在比赛中的表现被赋予了一个能力值。现在被召集的N
个同学已经集结完毕,他们按照编号依次站成了一排。
你需要编写一个程序,从这N
个同学中选出S
个同学,要求选出的同学的能力值的乘积最大,且要求被选出的相邻两个同学的编号的差不超过D
。
补全右侧代码区中的getBestTeams(int n,int a[],int kk, int d)
函数,实现找出能力值乘积最大而且满足编号要求的同学。将最终结果作为返回值返回,函数参数说明如下:
int n
召集到的同学的人数int a[]
各个同学的能力值(依次对应不同编号的同学,数组的index
就是学生的编号)int kk
需要选出的同学的人数int d
相邻同学的编号的差的最大值
样例1:
输入:3 , [7,4,7] , 2 , 50
输出:49
动态规划,这个是算法里面一直比较难的,当我拿到这个题的时候,有点难以下手,虽然知道要用动态规划但是如何用,自己完全不知道ÿ