美文网首页蓝桥杯题目
[蓝桥杯]最大乘积

[蓝桥杯]最大乘积

作者: 二十五六岁的你 | 来源:发表于2020-02-02 11:03 被阅读0次

问题 1936: [蓝桥杯][算法提高VIP]最大乘积

题目描述

对于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

地址

https://www.dotcpp.com/oj/problem1936.html

标签

贪心
分析

因为a[i]有正数也有负数,负负得正,所以要先把数列排序,分开正负,分别两两相乘进行比较。

负数两两相乘,正数就单个相乘。

当有多个数字,要选择少量的数字的时候,不用担心,因为已经排好序了,经过判断会直接选择,后面最大的数字。

package 贪心;

import java.util.Arrays;
import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * User: 76147
 * Date: 2020-02-02
 * Time: 9:57
 * Description: 贪心
 * 地址:https://www.dotcpp.com/oj/problem1936.html
 */
public class 最大乘积 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int a = sc.nextInt();
        for (int i = 0; i < a; i++) {
            int n = sc.nextInt();
            int m = sc.nextInt();
            int arr[] = new int[n];
            for (int j = 0; j < n; j++) {
                arr[j] = sc.nextInt();
            }
            Arrays.sort(arr);
            long res = 1;
            int p = 0, q = n - 1;
            while (m > 0) {
                if (p < n - 1 && q > 0 && (arr[p] * arr[p + 1] > arr[q] * arr[q - 1]) && m >= 2) {
                    res *= (arr[p] * arr[p + 1]);
                    p += 2;
                    m -= 2;
                } else {
                    res *= arr[q];
                    q--;
                    m--;
                }
            }
            System.out.println(res);
        }

    }

}

相关文章

  • [蓝桥杯]最大乘积

    问题 1936: [蓝桥杯][算法提高VIP]最大乘积 题目描述 对于n个数,从中取出m个数,如何取使得这m个数的...

  • 第九届蓝桥杯JavaB组决赛_最大乘积(全排列)

    题目分析:全排列知识点的考察,重复检查的方法,我使用set集合去重性快速的利用Java API帮我对结果的1-9不...

  • LeetCode-152-乘积最大子数组

    LeetCode-152-乘积最大子数组 152. 乘积最大子数组[https://leetcode-cn.com...

  • LeetCode 152. 乘积最大子序列(Maximum Pr

    152. 乘积最大子序列 乘积最大子序列给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至...

  • 动态规划

    求最大子数组,最大子乘积

  • 蓝桥杯

    明天就是蓝桥杯省赛了,今天早点睡吧,没事就是一个小比赛,没什么的。大不了就去打打酱油吧。早早洗漱好,就上了床,可是...

  • 蓝桥杯

    一周前才开始意识到蓝桥杯又要来了,赶快找大佬聊聊怎么准备 “只要你掌握了最近十年的7道题以上省一几乎没问题 4-6...

  • 蓝桥杯真题题解收藏

    收藏一些在网上发现的,觉得写的不错的蓝桥杯真题题解内容,给学生练习备战蓝桥杯时所用。2020蓝桥杯省赛第二场C组_...

  • 2019-10-27

    今天做最大k乘积问题

  • 乘积最大子序列

    题目描述 解题思路 动态规划,从0-i的子数组的最大乘积为max,最小乘积为min,则0-i+1的最大乘积为 i+...

网友评论

    本文标题:[蓝桥杯]最大乘积

    本文链接:https://www.haomeiwen.com/subject/kvofxhtx.html