इस समस्या में, हमें N पूर्णांकों का एक ऐरे और एक संख्या K दी गई है। हमारा कार्य उन सभी विशिष्ट संख्याओं को प्रिंट करना है जो ऐरे से किन्हीं K एलिमेंट्स को जोड़कर बनाई जा सकती हैं। किसी भी संख्या को K बार दोहराया जा सकता है।
उदाहरण
Input: array = {2, 5, 13, 9} K = 2
Output: 2,7,15,11,10,18,14,26,22
Explanation: 2 एलिमेंट्स जोड़े गए: 2+2=4, 2+5=7, 2+13=15, 2+9=11, 5+5=10, 5+13=18, 5+9=14, 13+13=26, 13+9=22, 9+9=18
इस समस्या को हल करने के लिए, हम ऐरे से K एलिमेंट्स के सभी संयोजन ढूंढेंगे। इसके लिए, हम रिकर्सन का उपयोग करेंगे जिसे संख्याएं जनरेट करने के लिए रिकर्सिवली कॉल किया जाएगा। डुप्लिकेट मानों से बचने के लिए, हम संख्याओं को एक सेट में संग्रहीत करेंगे।
उदाहरण
कोड हमारे समाधान का कार्यान्वयन दिखाएगा:
#include <bits/stdc++.h>
using namespace std;
set<int> distNumbers;
void generateNumberFromArray(int count, int arr[], int n, int num, int k) {
if (k == count) {
distNumbers.insert(num);
return;
}
for (int i = 0; i < n; i++) {
generateNumberFromArray(count + 1, arr, n, num + arr[i], k);
}
}
void printDistinctIntegers(int k, int arr[], int n) {
generateNumberFromArray(0, arr, n, 0, k);
cout << "The " << distNumbers.size() << " distinct integers are:\n";
while (!distNumbers.empty()) {
cout << *distNumbers.begin() << "\t";
distNumbers.erase(*distNumbers.begin());
}
}
int main() {
int arr[] = { 2, 5, 13, 9 };
int n = 4;
int k = 2;
printDistinctIntegers(k, arr, n);
return 0;
}
आउटपुट
The 9 distinct integers are - 4 7 10 11 14 15 18 22 26