Java 数组最小乘积子集程序
数组是一种线性数据结构,用于存储一组具有相同数据类型的数据元素。它以顺序方式存储数据。一旦我们创建了一个数组,我们就不能更改其大小,即它是固定长度的。
问题陈述指出,对于给定的数组,我们必须找到其子集的最小乘积。在本文中,我们将尝试找到给定问题的解决方案。
子集最小乘积程序
示例 1
让我们尝试通过一个例子来理解问题和可能的解决方案。
对于上述数组,一些可能的子集可能是:
5 | 5, 6 | 5, 6, 7 | 5, 6, 7, 8 | 5, 6, 7, 8, 9 | 6 | 6, 7, 8 | 9, 10, 11 | 8, 9 等等。
现在,我们将计算它们的乘积并返回它们的最小值。这里,5 是最小值。
数组语法
Data_Type[] nameOfarray; // declaration Or, Data_Type nameOfarray[]; // declaration Or, // declaration with size Data_Type nameOfarray[] = new Data_Type[ sizeofarray ]; // declaration and initialization Data_Type nameOfarray[] = { values separated with comma };
我们可以在程序中使用以上任何语法。
算法
步骤 1 − 我们首先导入 'java.lang.Math' 包,以便我们可以使用类 'Math' 的方法 'min()' 来检查两个给定参数中的最小值。
步骤 2 − 现在,创建一个名为 'Subset' 的类,并在其中定义一个名为 'minProduct()' 的方法,以及一个数组作为参数。
步骤 3 − 在方法 'minProduct()' 内部,声明并初始化一个名为 'res' 的整型变量来存储子集乘积的和。接下来,使用一个 for 循环,该循环将运行到数组的长度。
步骤 4 − 我们将声明并初始化另一个名为 'prod' 的整型变量来存储每次迭代期间子集的乘积。
步骤 5 − 现在,在第一个循环内部定义另一个 for 循环,该循环将从 'i + 1' 运行到数组的长度。在每次迭代中,它将检查乘积和与子集乘积之间的最小值。
步骤 6 − 最后,在 main() 方法中,我们将声明并初始化两个整型类型的数组以找到它们的子集最小乘积。接下来,创建一个名为 'obj' 的 'Subset' 类对象,并使用此对象以参数调用方法 'minProduct()'。
示例
import java.lang.Math; class Subset { // method that will calculate the minimum product void minProduct(int aray[]) { int res = aray[0]; // to store sum of product for (int i = 0; i < aray.length; i++) { int prod = aray[i]; for (int j = i + 1; j < aray.length; j++) { res = Math.min(res, prod); prod = prod * aray[j]; // calculating product } res = Math.min(res, prod); // checking minimum } System.out.println("Minimum product of Sub array is: " + res); } } public class Minsub { public static void main(String[] args) { int aray1[] = { 4, -6, 3, 6}; int aray2[] = { 3, 5, 9, 7, 12, 30 }; Subset obj = new Subset(); // object creation // calling the method using object obj.minProduct(aray1); obj.minProduct(aray2); } }
输出
Minimum product of Sub array is: -432 Minimum product of Sub array is: 3
结论
我们讨论了如何找到给定数组的子集的最小乘积的解决方案。此外,我们还发现了声明和初始化数组的语法。我们使用了静态方法 'min()',它检查两个指定值的最小值。记住关于静态方法的一件事是,它们可以在不创建任何对象的情况下被调用,我们只需使用类名和点运算符 (.)。