हमें पूर्णांक चर दिए गए हैं, मान लीजिए, N और K। कार्य पहले N के क्रमपरिवर्तन की गणना करना है और फिर क्रमचय को इस तरह से पुनर्व्यवस्थित करना है कि यह प्रत्येक तत्व से K दूरी हो।
आइए इसके लिए विभिन्न इनपुट आउटपुट परिदृश्य देखें -
इनपुट - इंट एन =20, इंट के =2
आउटपुट - पहली N संख्याओं को K दूरी पर बनाने के लिए उनका पुनर्व्यवस्था है:3 4 1 2 7 8 5 6 11 12 9 10 15 16 13 14 19 20 17 18.
स्पष्टीकरण - हमें पूर्णांक चर 'एन' यानी 20 और 'के' यानी 2. दिए गए हैं। अब हम 'एन' के क्रमपरिवर्तन की गणना करेंगे यानी 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 , 12, 13, 14, 15, 16, 17, 18. 19, 20. अब, हम तत्वों को इस प्रकार व्यवस्थित करेंगे कि सभी तत्व प्रत्येक तत्व से 'k' दूरी पर होंगे।
इनपुट - इंट एन =10, इंट के =3
आउटपुट − पहले N नंबरों को K दूरी पर बनाने के लिए उन्हें पुनर्व्यवस्थित करना है:संभव नहीं
स्पष्टीकरण - हमें पूर्णांक चर 'N' यानी 10 और 'K' यानी 3. दिए गए हैं। अब हम 'N' के क्रमपरिवर्तन की गणना करेंगे, यानी 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. अब , हम तत्वों को इस तरह से व्यवस्थित करेंगे कि सभी तत्व प्रत्येक तत्व से 'k' दूरी पर होंगे लेकिन दिए गए इनपुट मानों के साथ यह संभव नहीं है।
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
एक पूर्णांक प्रकार के तत्व यानी 'N' और 'K' इनपुट करें।
-
फ़ंक्शन को कॉल करें पुनर्व्यवस्था (int n, int k) किसी फ़ंक्शन को पैरामीटर के रूप में N और K पास करके।
-
समारोह के अंदर पुनर्व्यवस्था (int n, int k)
-
एक पूर्णांक चर को अस्थायी घोषित करें और इसे n% (2 * k) के साथ सेट करें।
-
एक पूर्णांक प्रकार की सरणी को n + 1 यानी prt[n+1] आकार के ptr के रूप में घोषित करें।
-
IF k =0 चेक करें, फिर i से 1 तक के लिए लूप प्रारंभ करें जब तक कि i आकार से कम न हो और i को 1 से बढ़ा दें और i प्रिंट करें।
-
जांचें कि क्या अस्थायी 0 के बराबर नहीं है, फिर प्रिंट करें पॉसिबल नहीं है।
-
I से 1 तक के लिए लूप प्रारंभ करें जब तक कि मैं N से कम न हो और ptr[i] को i के साथ सेट करें।
-
i से 1 तक के लिए लूप प्रारंभ करें जब तक कि i n से कम न हो और i + 2 * k के साथ i सेट करें। लूप के अंदर, j से 1 से j तक k से कम के लिए एक और लूप शुरू करें और j को 1 से बढ़ाएँ। लूप के अंदर, ptr[i + j -1] और ptr[k + i + j पास करके एक swa मेथड को कॉल करें। - 1] एक पैरामीटर के रूप में।
-
I से 1 tll के लिए लूप प्रारंभ करें I N से कम है और i को 1 से बढ़ाएँ।
-
प्रिंट करें [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