इस समस्या में, हमें n आकार की एक सरणी और एक धनात्मक पूर्णांक r दिया गया है। हमारा कार्य sizer की सरणी के तत्वों के सभी संभावित संयोजनों को प्रिंट करना है।
आइए समस्या को समझने के लिए एक उदाहरण लेते हैं -
Input: {5,6,7,8} ; r = 3 Output : {5,6,7}, {5,6,8}, {5,7,8}, {6,7,8}
इस समस्या को हल करने के लिए एक दृष्टिकोण तत्वों को ठीक करना होगा और फिर सभी संयोजनों को खोजने के लिए दूसरों पर पुनरावृत्ति या लूपिंग करना होगा। इसमें हमें सबसे पहले n-r+1 . को ठीक करना होगा केवल तत्व और बाकी पर लूप या पुनरावृत्ति।
उदाहरण
#include<iostream> using namespace std; void printRElementCombination(int arr[], int combination[], int start, int end, int index, int r){ if (index == r){ cout<<"{ "; for (int j = 0; j < r; j++) cout << combination[j] << " "; cout<<"}\t"; return; } for (int i = start; i <= end && end - i + 1 >= r - index; i++){ combination[index] = arr[i]; printRElementCombination(arr, combination, i+1, end, index+1, r); } } int main(){ int arr[] = {1, 2, 3, 4, 5}; int r = 3; int n = 5; int combination[r]; cout<<"The combination is : \n"; printRElementCombination(arr, data, 0, n-1, 0, r); }
आउटपुट
संयोजन है -
{ 1 2 3 } { 1 2 4 } { 1 2 5 } { 1 3 4 } { 1 3 5 } { 1 4 5 } { 2 3 4 } { 2 3 5 } { 2 4 5 } { 3 4 5 }
एक ही समस्या को हल करने के अन्य तरीके संयोजन में वर्तमान तत्व को शामिल करने की जांच कर सकते हैं और आवश्यक आकार के सभी संयोजनों को प्रिंट कर सकते हैं। विचार वही है, हम तत्व पर पुनरावृति करेंगे और संयोजन को कॉम्बो सरणी में संग्रहीत करेंगे। लेकिन तत्व की फिक्सिंग नहीं की जाती है।
नीचे दिया गया कार्यक्रम आपके लिए समस्या को और अधिक समझने योग्य बना देगा -
उदाहरण
#include <iostream> using namespace std; void combinationUtil(int arr[], int n, int r, int index, int combo[], int i){ if (index == r){ cout<<"{"; for (int j = 0; j < r; j++) cout << combo[j] << " "; cout<<"}\t"; return; } if (i >= n) return; combo[index] = arr[i]; combinationUtil(arr, n, r, index + 1, combo, i + 1); combinationUtil(arr, n, r, index, combo, i+1); } int main(){ int arr[] = {1, 2, 3, 4, 5}; int r = 3; int n = 5; int combo[r]; cout<<"The combination is : \n"; combinationUtil(arr, n, r, 0, combo, 0); return 0; }
आउटपुट
संयोजन है -
{1 2 3 } {1 2 4 } {1 2 5 } {1 3 4 } {1 3 5 } {1 4 5 } {2 3 4 } {2 3 5 } {2 4 5 } {3 4 5 }