C++ 程序用于产品数组谜题

17 Mar 2025 | 4 分钟阅读

在本文中,我们将讨论如何使用几种方法在 C++ 中找到乘积数组难题。

问题陈述

我们有一个整数数组,我们必须创建一个与输入数组大小相同的新数组,其中新数组的每个元素都等于旧给定数组 nums 中除 nums[i] 之外所有元素的乘积。

输入格式

我们以一个整数数组为例:

示例 nums = {1, 2, 3, 4, 5}

输出格式:

我们期望在执行上述操作后打印数组元素。

示例:新数组为 product = {120, 60, 40, 30, 24}

说明

Product[0] = 2*3*4*5

Product[1] = 1*3*4*5

Product[2] = 1*2*4*5

Product[3] = 1*2*3*5

Product[4] = 1*2*3*4

解决给定问题的方法有很多。在这里,我们讨论 4 种解决问题的方法。这个问题必须在不使用 除法运算符 的情况下解决。

方法 1:暴力法

让我们举一个例子来演示在 C++ 中使用暴力法解决 乘积数组难题

输出

C++ program for product array puzzle

说明

有一个 整数 n,它是数组的长度,以及一个整数数组。在上面的程序中,有两个循环在运行。第一个循环遍历数组。之后,内部循环包含三个变量:left、right 和 mul 变量。left 变量将减一以获取当前索引之前数字的乘积,right 变量将增一以获取当前索引之后数字的乘积。这两个变量 left 和 right 有单独的 while 循环。在获得索引左侧和索引右侧元素的乘积后,我们将打印两者的乘积。

方法 2:使用幂函数法

让我们举一个例子来演示在 C++ 中使用幂函数法解决 乘积数组难题

输出

C++ program for product array puzzle

说明

这个程序有一个 for 循环,它遍历给定的数组,然后找到数组元素的总乘积并将其存储在名为 mul 的变量中。之后,我们再次使用 for 循环再次遍历数组,但这次,我们将总元素的乘积乘以当前元素的幂(减一)。这意味着我们将当前元素的倒数乘以整个乘积,这将给出我们预期的相同结果。

方法 3:使用左乘积和右乘积

让我们举一个例子来演示在 C++ 中使用左乘积和右乘积解决 乘积数组难题

输出

C++ program for product array puzzle

说明

这个程序也通过使用两个数组 leftright 来解决问题。这个程序有四个 for 循环,其中一个 for 循环用于将数组 left 和 right 的每个元素初始化为 0,然后第二个 for 循环用于获取每个元素的前缀乘积。之后,第三个 for 循环用于获取元素的后缀乘积,然后最终的 for 循环根据当前元素生成 前缀乘积后缀乘积

方法 4:使用对数和反对数

让我们举一个例子来演示在 C++ 中使用对数和反对数解决 乘积数组难题

输出

C++ program for product array puzzle