এই সমস্যাটিতে, আমাদেরকে N উপাদানগুলির একটি অ্যারে দেওয়া হয়েছে। এবং একটি পূর্ণসংখ্যা M.
দ্বারা বিভাজ্য উপাদানগুলির সমস্ত যোগফল ফেরত দিতে হবেInput : array = {4, 7, 3} ; M = 3
Output : 5+4+3 ; 5+4-3 এই সমস্যাটি সমাধান করার জন্য, আমাদের একটি পাওয়ার সেটের ধারণাটি জানতে হবে যা প্রাপ্ত সম্ভাব্য সমস্ত যোগফল খুঁজে বের করতে ব্যবহার করা যেতে পারে। এই যোগফল থেকে, M.
দ্বারা বিভাজ্য সমস্তগুলি মুদ্রণ করুনঅ্যালগরিদম
Step 1: Iterate overall combinations of ‘+’ and ‘-’ using power set. Step 2: If the sum combination is divisible by M, print them with signs.
উদাহরণ
#include <iostream>
using namespace std;
void printDivisibleSum(int a[], int n, int m){
for (int i = 0; i < (1 << n); i++) {
int sum = 0;
int num = 1 << (n - 1);
for (int j = 0; j < n; j++) {
if (i & num)
sum += a[j];
else
sum += (-1 * a[j]);
num = num >> 1;
}
if (sum % m == 0) {
num = 1 << (n - 1);
for (int j = 0; j < n; j++) {
if ((i & num))
cout << "+ " << a[j] << " ";
else
cout << "- " << a[j] << " ";
num = num >> 1;
}
cout << endl;
}
}
}
int main(){
int arr[] = {4,7,3};
int n = sizeof(arr) / sizeof(arr[0]);
int m = 3;
cout<<"The sum combination divisible by n :\n";
printDivisibleSum(arr, n, m);
return 0;
} আউটপুট
যোগফল n −
দ্বারা বিভাজ্য- 4 + 7 - 3 - 4 + 7 + 3 + 4 - 7 - 3 + 4 - 7 + 3