मान लीजिए कि हमारे पास एक सकारात्मक संख्या n है। हमें सकारात्मक संख्याओं के सभी संयोजनों को खोजना है, जो उस संख्या में जुड़ते हैं। यहां हम केवल संयोजन चाहते हैं, क्रमपरिवर्तन नहीं। मान n =4 के लिए, [1, 1, 1, 1], [1, 1, 2], [2, 2], [1, 3], [4]
होंगे।हम इसे रिकर्सन का उपयोग करके हल करेंगे। हमारे पास संयोजनों को संग्रहीत करने के लिए एक सरणी है, और हम पुनरावर्ती दृष्टिकोण का उपयोग करके उस सरणी को भरेंगे। प्रत्येक संयोजन तत्वों के बढ़ते क्रम में संग्रहीत किया जाएगा।
उदाहरण
#include<iostream> using namespace std; void getCombination(int arr[], int index, int num, int decrement) { if (decrement < 0) return; if (decrement == 0){ for (int i = 0; i < index; i++) cout << arr[i] << " "; cout << endl; return; } int prev; if(index == 0) prev = 1; else prev = arr[index-1]; for (int k = prev; k <= num ; k++) { arr[index] = k; getCombination(arr, index + 1, num, decrement - k); } } void findCombinations(int n) { int arr[n]; getCombination(arr, 0, n, n); } int main() { int n = 4; findCombinations(n); }
आउटपुट
1 1 1 1 1 1 2 1 3 2 2 4