हमें पूर्णांक चर दिए गए हैं, मान लीजिए, N और K। कार्य है पहले N के क्रमचय (permutation) की गणना करना और फिर क्रमचय को इस तरह पुनर्व्यवस्थित करना कि यह हर तत्व से K दूरी पर हो।
विभिन्न इनपुट-आउटपुट परिदृश्य
इनपुट - int n = 20, int k = 2
आउटपुट - पहले N संख्याओं को K दूरी पर बनाने का पुनर्व्यवस्थापन है: 3 4 1 2 7 8 5 6 11 12 9 10 15 16 13 14 19 20 17 18.
व्याख्या - हमें पूर्णांक चर 'N' यानी 20 और 'K' यानी 2 दिए गए हैं। अब हम 'N' यानी 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 के क्रमचय की गणना करेंगे। अब, हम तत्वों को इस तरह व्यवस्थित करेंगे कि सभी तत्व हर तत्व से 'k' दूरी पर हों।
इनपुट - int n = 10, int k = 3
आउटपुट - पहले N संख्याओं को K दूरी पर बनाने का पुनर्व्यवस्थापन है: Not Possible
व्याख्या - हमें पूर्णांक चर 'N' यानी 10 और 'K' यानी 3 दिए गए हैं। अब हम 'N' यानी 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 के क्रमचय की गणना करेंगे। अब, हम तत्वों को इस तरह व्यवस्थित करेंगे कि सभी तत्व हर तत्व से 'k' दूरी पर हों लेकिन दिए गए इनपुट मानों के साथ यह संभव नहीं है।
उपयोग किया गया दृष्टिकोण
पूर्णांक प्रकार के तत्व इनपुट करें यानी 'N' और 'K'।
फ़ंक्शन Rearrangement(int n, int k) को कॉल करें N और K को पैरामीटर के रूप में फ़ंक्शन में पास करके।
फ़ंक्शन Rearrangement(int n, int k) के अंदर
temp नामक एक पूर्णांक चर घोषित करें और इसे n % (2 * k) से सेट करें।
ptr नामक एक पूर्णांक प्रकार की सरणी घोषित करें आकार n + 1 यानी prt[n+1]।
जांचें यदि k = 0 तो i को 1 से size से कम होने तक FOR लूप शुरू करें और i को 1 से बढ़ाएं और i प्रिंट करें।
जांचें यदि temp 0 के बराबर नहीं है तो NOT POSSIBLE प्रिंट करें।
i को 1 से N से कम होने तक FOR लूप शुरू करें और ptr[i] को i से सेट करें।
i को 1 से n से कम होने तक FOR लूप शुरू करें और i को i + 2 * k से सेट करें। लूप के अंदर, j को 1 से k से कम होने तक एक और FOR लूप शुरू करें और j को 1 से बढ़ाएं। लूप के अंदर, ptr[i + j -1] और ptr[k + i + j - 1] को पैरामीटर के रूप में पास करके swa विधि को कॉल करें।
i को 1 से N से कम होने तक FOR लूप शुरू करें और i को 1 से बढ़ाएं।
prt[i] प्रिंट करें।
परिणाम प्रिंट करें।
उदाहरण
#include <bits/stdc++.h> using namespace std; void Rearrangement(int n, int k){ int temp = n % (2 * k); int ptr[n + 1]; if(k == 0){ for(int i = 1; i <= n; i++){ cout << i << " "; } return; } if(temp != 0){ cout<<"Not Possible"; return; } for(int i = 1; i <= n; i++){ ptr[i] = i; } for(int i = 1; i <= n; i += 2 * k){ for(int j = 1; j <= k; j++){ swap(ptr[i + j - 1], ptr[k + i + j - 1]); } } for(int i = 1; i <= n; i++){ cout << ptr[i] << " "; } } int main(){ int n = 20; int k = 2; cout<<"Rearrangement of first N numbers to make them at K distance is: "; Rearrangement(n, k); return 0; } आउटपुट
उपरोक्त कोड चलाने पर निम्नलिखित आउटपुट उत्पन्न होगा:
Rearrangement of first N numbers to make them at K distance is: 3 4 1 2 7 8 5 6 11 12 9 10 15 16 13 14 19 20 17 18