您的位置:首页 > 编程语言 > Java开发

2016蓝桥杯假期任务之《最大乘积》

2016-02-17 23:14 387 查看
问题描述
  对于n个数,从中取出m个数,如何取使得这m个数的乘积最大呢?
输入格式
  第一行一个数表示数据组数

  每组输入数据共2行:

  第1行给出总共的数字的个数n和要取的数的个数m,1<=n<=m<=15,

  第2行依次给出这n个数,其中每个数字的范围满足:a[i]的绝对值小于等于4。
输出格式
  每组数据输出1行,为最大的乘积。
样例输入
1

5 5

1 2 3 4 2
样例输出
48


代码:

import java.util.Scanner;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);

int T = input.nextInt();
while (T--!= 0) {
int n = input.nextInt();
int m = input.nextInt();
int[] a = new int
;
for (int i = 0; i < n; i++)
a[i] = input.nextInt();
Arrays.sort(a);
if (m == 1) {
System.out.println(a[a.length - 1]);
continue;
}
int sum = 1;
for (int i = a.length - 1, j = 0; i > 0 && j < a.length - 1;) {
if (m <= 0)
break;
if (a[i] * a[i - 1] > a[j] * a[j + 1]) {
sum *= a[i];
i--;
m--;
} else {
if (m >= 2) {
sum *= a[j] * a[j + 1];
j += 2;
m -= 2;
} else {
sum *= a[i];
i++;
m--;
}
}

}
System.out.println(sum);
}

}
}

运行结果:

1
5 5
1 2 3 4 2
48



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java java学习 博客