C++ 数组求和难题
数组是一种数据结构,可存储同一数据类型的多个元素。它可以一次存储整组值。但其长度需要预先定义。
在此数组求和谜题中,我们提供一个确定大小(假设为 n)的数组 A1。为了解决此谜题,我们将创建一个名为 S1 的数组,该数组存储数组中所有元素的和,不包括该元素的位置。例如,如果正在计算 S1[3],则我们会找出 A1 中所有元素的和,不包括位置 4 的元素。
示例 −
Array A1 = {1,2,3,4,6} Output S1 = {15,14,13,12,10}
说明 − 要计算和数组,我们将把初始数组的每个元素添加到一个和变量,除了具有与和数组相同的数字的值。这意味着对于和数组的第一个元素,我们将计算除了数组第一个元素之外的所有元素的和,对整个数组都如此。让我们使用此逻辑计算和数组的每个元素的值。
Sum[0],我们将计算除第 0个索引位置处的元素之外所有元素的和。因此,
Sum[0] = 2+3+4+6 = 15
同样,我们将计算值和[1]...
和[1] = 1+3+4+6 = 14
和[2] = 1+2+4+6 = 13
和[3] = 1+2+3+6 = 12
和[4] = 1+2+3+4 = 10
因此,和数组的所有元素均未准备好,并且和数组为 sum = {15,14,13,12,10}
算法
Step 1 : Initialise a sum array sum[n] to zero, where n = size of the original array. Step 2 : Iterate over sum[] and do : Step 2.1 : For sum[i], run a for loop for j -> 0 to n Step 2.2 : if(i != j) {sum[i] += arr[j] } Step 3: Print sum array using std print statement.
Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
示例
#include <iostream> using namespace std; int main() { int arr[] = { 3, 6, 4, 8, 9 }; int n = sizeof(arr) / sizeof(arr[0]); int leftSum[n], rightSum[n], Sum[n], i, j; leftSum[0] = 0; rightSum[n - 1] = 0; cout<<"The original array is : \n"; for (i = 0; i < n; i++) cout << arr[i] << " "; for (i = 1; i < n; i++) leftSum[i] = arr[i - 1] + leftSum[i - 1]; for (j = n - 2; j >= 0; j--) rightSum[j] = arr[j + 1] + rightSum[j + 1]; for (i = 0; i < n; i++) Sum[i] = leftSum[i] + rightSum[i]; cout<<"\nThe sum array is : \n"; for (i = 0; i < n; i++) cout << Sum[i] << " "; return 0; }
输出
The original array is : 3 6 4 8 9 The sum array is : 27 24 26 22 21
广告