当前位置: 首页 > 知识库问答 >
问题:

从数组中的三个整数中找出你能得到的最高乘积——如何使用蛮力求解

长孙阳焱
2023-03-14
int arr[] = {10, 10, 1, 3};

假设:假设每个int都是正的。假设数组至少包含3个整数

从上述数组中的三个整数中找出最高乘积。我们应该退还300英镑(10英镑)∗ 10∗ 3).

我想用蛮力法解决这个问题。基本上,我想把每个整数乘以另一个整数,然后把乘积乘以另一个整数。有谁能告诉我如何使用嵌套的3个循环来实现这一点,因为在尝试优化方法之前,我想先了解如何使用蛮力来实现这一点。

谢谢。

共有2个答案

董飞航
2023-03-14

有一些方法可以忽略暴力。

1.分类

首先可以对数组进行排序,这需要O(nlogn)时间。排序后,选择最后3项。因为它们是最高的物品,所以产品将是最高的

注意:如果数组中有任何负数,它将不起作用。为了修复它,你可以检查一些组合。首先计算前3项产品,然后计算最后3项,然后计算前2项和最后1项。其中之一将是最伟大的。

2.动态规划

请参阅矩阵链乘法或最大增长长度问题和动态规划解决方案。它将帮助你理解什么是动态规划,并创建简单的算法来解决你的问题。

吕冠宇
2023-03-14

使用三个for循环:

public static Integer highestProduct(int array[]) 
{
    if((array==null)||(array.length<3))
    {
        return null;
    }

    else
    {
        int max_product = Integer.MIN_VALUE;
        for(int i=0;i<array.length;i++)
        {
            for(int j=i+1;j<array.length;j++)
            {
                for(int k=j+1;k<array.length;k++)
                {
                    int product = array[i]*array[j]*array[k];
                    if(product>=max_product)
                    {
                        max_product = product;
                    }
                }
            }
        }
        return max_product;
     }
 }
 类似资料:
  • 假设第一个输入行是这样的: 第二输入线为: 输出应为: 我试着把所有的数字放在一个单独的数组里。但我不知道如何找到所说的数组的乘积。输出大小应该是第一个数的大小+第二个数的大小。因此,如果产品大小较小,它应该有一个前导0。

  • 我需要找到所输入的数字的和和乘积。我有求和部分,但它唯一的问题是,当我第一次输入一个数字时,它会给我正确的答案,但当我输入另一个数字时,它只是将第一个数字的和与第二个数字的和相加,然后检查这两个和的和是否是奇数(对不起,如果它的混淆)。对于代码的产品部分,我似乎不知道该怎么做。 最后,如果和和积都是奇数,我需要它来说明输入的数字是一个极奇数。 这个Java应用程序检查区间[101,100001]中

  • 我有一个数组,我需要三个数中最大的一个数和各自的索引值。我有一个这样的数组: 如何找到最大的数字及其索引值?

  • 给定一个数组,我想计算子数组的数量(连续的),当取的乘积不会被k整除。 例如。设 A = 和 K = 2 则使乘积不能被 K 整除的子数组数为 2: 其余的都可以被2整除。 我首先尝试计算子数组(n)(n 1)/2的总数,然后使用mod减去可被k整除的子数组的数量,但它不起作用。我该如何解决这个问题? 这(错误地)计算了乘积可被K整除的子阵列数: 一个稍微相关的问题是这个问题,但它涉及加法,因此不

  • 本文向大家介绍C ++中给定乘积的N个整数的最大GCD,包括了C ++中给定乘积的N个整数的最大GCD的使用技巧和注意事项,需要的朋友参考一下 假设我们有两个整数N和P。P是N个未知整数的乘积。我们必须找到这些整数的最大可能GCD。假设N = 3,且P = 24,则不同的组将像{1,1,24},{1,2,12},{1,3,8},{1,4,6},{2 ,2,6},{2,3,4}。GCD为:1、1、1

  • 我正在制作一个数组,它从1-100生成随机数。然后,在最后,我将从列表中输出最大值和最小值。但是,我不知道如何找到/调用max和min,我尝试使用math方法函数(如math.min()),但我认为它对数组不起作用。这是我的代码(下划线是我想要调用最大值和最小值的地方,但我不知道如何调用)。 }