/*
求最优解问题——递归/动态规划
从n个学生中找出k个————————从n个学生中找到最后一个,然后从剩下的里面找出k-1个
*/
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()) {
//总人数
int n = sc.nextInt();
//学生能力值数组,第i个人直接对应arr[i]
int[] arr = new int[n + 1];
//初始化
for (int i = 1; i <= n; i++) {//人直接对应坐标
arr[i] = sc.nextInt();
}
//选择的学生数
int kk = sc.nextInt();
//间距
int dd = sc.nextInt();
/**
* 递推的时候,以f[one][k]的形式表示
* 其中:one表示最后一个人的位置,k为包括这个人,一共有k个人
* 原问题和子问题的关系:f[one][k]=max{f[left][k-1]*arr[one],g[left][k-1]*arr[one]}
*/
//规划数组
long[][] f = ne
Java解决 合唱团问题 (动态规划、递归)
最新推荐文章于 2023-01-14 19:50:13 发布