Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

C ++ Sum Array Puzzle


อาร์เรย์ เป็นโครงสร้างข้อมูลที่จัดเก็บองค์ประกอบหลายรายการในประเภทข้อมูลเดียวกัน สามารถเก็บค่าทั้งชุดได้ในคราวเดียว แต่ต้องกำหนดความยาวของมันไว้ล่วงหน้า

ในปริศนาอาเรย์ผลรวมนี้ เราจะได้รับอาร์เรย์ A1 ที่มีขนาดที่แน่นอนคือ n เพื่อไขปริศนานี้ เราจะสร้างอาร์เรย์ที่เรียกว่า S1 ซึ่งเก็บผลรวมขององค์ประกอบทั้งหมดของอาร์เรย์ ยกเว้นองค์ประกอบที่มีการใช้ตำแหน่ง ตัวอย่างเช่น หากกำลังคำนวณ S1[3] เราจะหาผลรวมขององค์ประกอบทั้งหมดของ A1 ยกเว้นองค์ประกอบที่ตำแหน่ง 4

ตัวอย่าง −

Array A1 = {1,2,3,4,6}
Output S1 = {15,14,13,12,10}

คำอธิบาย − ในการคำนวณอาร์เรย์ผลรวม เราจะเพิ่มแต่ละองค์ประกอบของอาร์เรย์เริ่มต้นให้กับตัวแปรผลรวมที่ยอมรับค่าที่มีตัวเลขเดียวกันกับอาร์เรย์ผลรวม ซึ่งหมายความว่าสำหรับองค์ประกอบแรกของอาร์เรย์ผลรวม เราจะคำนวณผลรวมขององค์ประกอบทั้งหมดยกเว้นองค์ประกอบแรกของอาร์เรย์ และเหมือนกันสำหรับอาร์เรย์ทั้งหมด มาคำนวณค่าสำหรับแต่ละองค์ประกอบของอาร์เรย์ผลรวมโดยใช้ตรรกะนี้

Sum[0] เราจะคำนวณผลรวมขององค์ประกอบยกเว้นองค์ประกอบที่ 0 th ดัชนี. ดังนั้น ,

ผลรวม[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

ดังนั้นองค์ประกอบทั้งหมดของอาร์เรย์ผลรวมยังไม่พร้อม และอาร์เรย์ผลรวมคือผลรวม ={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.

ตัวอย่าง

#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