Mảng là một cấu trúc dữ liệu lưu trữ nhiều phần tử của cùng một kiểu dữ liệu. Nó có thể lưu trữ toàn bộ bộ giá trị cùng một lúc. Nhưng độ dài của nó cần được xác định trước.
Trong câu đố mảng tổng này, chúng ta được cung cấp một mảng A1 có kích thước xác định, giả sử là n. Để giải câu đố này, chúng ta sẽ tạo một mảng có tên là S1 để lưu trữ tổng của tất cả các phần tử của mảng ngoại trừ phần tử có vị trí đang được sử dụng. Ví dụ, nếu S1 [3] đang được tính thì chúng ta sẽ tìm tổng tất cả các phần tử của A1 ngoại trừ phần tử ở vị trí 4.
Ví dụ -
Array A1 = {1,2,3,4,6} Output S1 = {15,14,13,12,10}
Giải thích - Để tính toán mảng tổng, chúng ta sẽ cộng từng phần tử của mảng ban đầu vào một biến tổng nhận giá trị có cùng số với mảng tổng. Có nghĩa là đối với phần tử đầu tiên của mảng tổng, chúng ta sẽ tính tổng của tất cả các phần tử ngoại trừ phần tử đầu tiên của mảng và tương tự cho toàn bộ mảng. Hãy tính toán các giá trị cho từng phần tử của mảng tổng bằng cách sử dụng logic này.
Tính tổng [0], chúng tôi sẽ tính tổng các phần tử ngoại trừ phần tử ở thứ 0 mục lục. Vì vậy,
Tính tổng [0] =2 + 3 + 4 + 6 =15
Tương tự, chúng ta sẽ tính giá trị của tổng [1] ...
Tính tổng [1] =1 + 3 + 4 + 6 =14
Tổng [2] =1 + 2 + 4 + 6 =13
Tính tổng [3] =1 + 2 + 3 + 6 =12
Tính tổng [4] =1 + 2 + 3 + 4 =10
Vì vậy, tất cả các phần tử của mảng tổng chưa sẵn sàng và mảng tổng là sum ={15,14,13,12,10}
Thuật toán
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.
Ví dụ
#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; }
Đầu ra
The original array is : 3 6 4 8 9 The sum array is : 27 24 26 22 21