Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm N’th item trong một tập hợp được tạo thành bởi tổng của hai mảng trong C ++

Trong bài toán này, chúng ta được cung cấp hai mảng đã sắp xếp arr1 [] và arr2 [] có kích thước m và một phần tử N. Nhiệm vụ của chúng ta là Tìm mục thứ N trong một tập hợp được tạo thành bởi tổng của hai mảng.

Mô tả mã - Ở đây, chúng ta sẽ tạo một tập hợp bao gồm tổng phần tử một của arr1 và một trong arr2, tức là sum =arr1 [i] + arr2 [j], i, j

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào

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

Đầu ra

Giải thích

Các phần tử của tập hợp là -

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.

Phương pháp tiếp cận giải pháp

Phương pháp giải đơn giản là tìm các phần tử của tập hợp bằng cách tìm tổng các phần tử của mảng. Đối với điều này, chúng tôi sẽ sử dụng các vòng lặp lồng nhau, vòng lặp bên ngoài để lặp lại các phần tử của arr1 và vòng lặp bên trong để lặp lại các phần tử của arr2. Và đối với mỗi lần lặp của vòng lặp bên trong, chúng tôi sẽ lưu trữ tổng vào tập hợp, điều này sẽ không cho phép các phần tử trùng lặp. Sau khi tất cả các giá trị tổng được cấp, chúng tôi sẽ duyệt qua tập hợp và trả về phần tử thứ N.

Chương trình minh họa hoạt động của giải pháp của chúng tôi,

Ví dụ

#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;
}

Đầu ra

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