package wangyi;
/**
* 需求分析
* n個學生站成一排 每個學生有一個能力值 牛牛想從n個學生中選出k名學生 要求相鄰學生編號不超過d使得這k個學生乘積最大
*/
import java.util.*;
public class Demo{
public static void main(String[] args){
//鍵盤輸入
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int[] nums = new int[n];
for(int i = 0; i < n; i++){
nums[i] = scan.nextInt();//能力值
}
int k = scan.nextInt();//距離
int d = scan.nextInt();//範圍
long[][] max = new long[k][n];
long[][] min = new long[k][n];
for(int i = 0; i < k; i++)
for(int j = 0; j < n; j++){
max[i][j] = 1;
if(i == 0){
min[i][j] = nums[j];
max[i][j] = nums[j];
}
}
for(int i = 1; i < k; i++)
for(int j = 0; j < n; j++)
for(int m = 1; m <= d; m++){
if(j - m >= 0){
if(nums[j] > 0){
min[i][j] = Math.min(min[i][j], min[i - 1][j - m] * nums[j]);
max[i][j] = Math.max(max[i][j], max[i - 1][j - m] * nums[j]);
} else{
min[i][j] = Math.min(min[i][j], max[i - 1][j - m] * nums[j]);
max[i][j] = Math.max(max[i][j], min[i - 1][j - m] * nums[j]);
}
}
}
long Max = 0;
for(int i = 0; i < n; i++)
Max = Math.max(Max, max[k - 1][i]);
System.out.println(Max);
}
}
n個學生站成一排 網易面試題之每個學生有一個能力值 牛牛想從n個學生中選出k名學生 要求相鄰學生編號不超過d使得這k個學生乘積最大
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.