কম্পিউটার

C++ এ N সংখ্যার একটি প্রদত্ত অ্যারে থেকে K সংখ্যা দ্বারা গঠিত হতে পারে এমন সমস্ত স্বতন্ত্র পূর্ণসংখ্যা মুদ্রণ করুন


এই সমস্যায়, আমাদেরকে N পূর্ণসংখ্যার একটি অ্যারে দেওয়া হয়েছে এবং একটি সংখ্যা K দেওয়া হয়েছে। আমাদের কাজ হল সমস্ত স্বতন্ত্র সংখ্যা মুদ্রণ করা যা অ্যারে থেকে যেকোনো K উপাদান যোগ করে তৈরি করা যেতে পারে। যেকোনো সংখ্যা নির্বাচন করার সময় K বার পুনরাবৃত্তি করা যেতে পারে।

সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক -

Input: array = {2, 5, 13, 9} K = 2
Output: 2,7,15,11,10,18,14,26,22
Explaination: 2 elements added :
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

  1. C++ এ একটি অ্যারেতে সমস্ত মৌলিক সংখ্যার গুণফল

  2. একটি প্রদত্ত উত্স থেকে একটি গন্তব্য C++ এ সমস্ত পথ প্রিন্ট করুন

  3. C++ এ প্রদত্ত সংখ্যা পর্যন্ত অ্যারের উপাদানগুলিকে সর্বাধিক করুন

  4. C++ এ একটি অ্যারের অঙ্ক থেকে গঠিত দুটি সংখ্যার ন্যূনতম যোগফল