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

ค้นหาอาร์เรย์ดั้งเดิมจากอาร์เรย์ที่เข้ารหัส (อาร์เรย์ของผลรวมขององค์ประกอบอื่นๆ) โดยใช้ C++


ให้เราพิจารณาว่าเรามีอาร์เรย์ของจำนวนเต็ม อาร์เรย์นั้นเป็นอาร์เรย์ที่เข้ารหัส สมมติว่าอาร์เรย์คือ A =[10, 14, 12, 13, 11] อาร์เรย์ดั้งเดิมคือ B =[5, 1, 3, 2, 4 ] เราจะเห็นว่าแต่ละองค์ประกอบที่ดัชนี I ของ A เป็นไปตามกฎนี้ A[i] =ผลรวมขององค์ประกอบทั้งหมดที่ตำแหน่ง j ใน B[j] โดยที่ I ≠ j งานของเราคือค้นหาอาร์เรย์ดั้งเดิมจากอาร์เรย์ที่เข้ารหัส

งานจะขึ้นอยู่กับการสังเกตเลขคณิต สมมติว่าอาร์เรย์มีขนาด 4 อาร์เรย์ดั้งเดิม B มีสี่องค์ประกอบ B =[a, b, c, d] ดังนั้น A จะเหมือนกับ A[b+c+d, a+c+d, a+b+d , a+b+c] หากเราเพิ่มองค์ประกอบทั้งหมดของ B เราจะได้รับ sum =b+c+d+a+c+d+a+b+d+a+b+c =3*( a+b+c+d). ดังนั้นผลรวมขององค์ประกอบของ B จะเป็นผลรวม/3 ตอนนี้ ถ้าเราเห็นองค์ประกอบของ B จะเป็น [ผลรวม – A[0], ผลรวม – A[1], ผลรวม – A[2], ผลรวม – A[3 ]]

ตัวอย่าง

#include<iostream>
using namespace std;
void showOrigianlArray(int arr[], int n) {
   int sum = 0;
   for (int i=0; i<n; i++)
      sum += arr[i];
      sum = sum/(n-1);
   for (int i=0; i<n; i++)
      cout << (sum - arr[i]) << " ";
}
int main() {
   int arr[] = {10, 14, 12, 13, 11};
   int n = sizeof(arr) / sizeof(arr[0]);
   showOrigianlArray(arr, n);
}

ผลลัพธ์

5 1 3 2 4