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

ค้นหารายการที่ N ในชุดที่เกิดจากผลรวมของสองอาร์เรย์ใน C++


ในปัญหานี้ เราได้รับอาร์เรย์ที่จัดเรียงสองชุด arr1[] และ arr2[] ขนาด m และองค์ประกอบ N หนึ่งรายการ หน้าที่ของเราคือค้นหารายการที่ Nth ในชุดที่เกิดจากผลรวมของอาร์เรย์สองชุด

คำอธิบายโค้ด − ที่นี่ เราจะสร้างเซตที่ประกอบด้วยผลรวมขององค์ประกอบหนึ่งใน arr1 และหนึ่งใน arr2 นั่นคือ sum =arr1[i] + arr2[j] โดยที่ i , j

มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน

อินพุต

arr1[] = {3, 1, 5} , arr2[] = {6, 2, 8} , N = 4

ผลผลิต

คำอธิบาย

องค์ประกอบของเซตคือ −

9 (3+6 and 1 +8) , 5 (3 + 2) , 11 (3+8, 5+6), 7 (1+6, 5+2), 3 (1+2), 13 (5+8).
The fourth element is 7.

แนวทางการแก้ปัญหา

แนวทางแก้ไขคือเพียงแค่หาองค์ประกอบของเซตโดยหาผลรวมขององค์ประกอบของอาร์เรย์ สำหรับสิ่งนี้ เราจะใช้ nested loops, outer loop เพื่อ iterate องค์ประกอบของ arr1 และ inner loop เพื่อ iterate องค์ประกอบของ arr2 และสำหรับการวนซ้ำของวงในแต่ละครั้ง เราจะเก็บผลรวมไว้ในชุด ซึ่งจะไม่อนุญาตให้องค์ประกอบที่ซ้ำกัน หลังจากที่ป้อนค่าผลรวมทั้งหมดแล้ว เราจะข้ามชุดและส่งคืนองค์ประกอบที่ N

โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา

ตัวอย่าง

#include <iostream>
using namespace std;
void calcSumVariables(int sum[], int n) {
   float SUMX = 0;
   for (int i = 0; i < n; i++) {
      SUMX += sum[i];
   }
   SUMX /= (n - 1);
   for (int i = 0; i < n; i++)
      cout<<"\nx"<<(i + 1)<<" = "<<(SUMX - sum[i]);
}
int main(){
   int sum[] = {3, 8, 6, 7, 4, 5, 9 };
   int N = sizeof(sum) / sizeof(sum[0]);
   cout<<"The value of variables that form the sum are ";
   calcSumVariables(sum, N);
   return 0;
}

ผลลัพธ์

The value of variables that form the sum are
x1 = 4
x2 = -1
x3 = 1
x4 = 0
x5 = 3
x6 = 2
x7 = -2