हमारे पास पहले N प्राकृतिक संख्याएं हैं। हमारा कार्य उनमें से एक क्रमपरिवर्तन प्राप्त करना है जहां हर दो लगातार तत्वों के बीच निरपेक्ष अंतर > 1 हो। यदि ऐसा कोई क्रमपरिवर्तन मौजूद नहीं है, तो -1 वापस करें।
दृष्टिकोण सरल है। हम लालची दृष्टिकोण का उपयोग करेंगे। हम सभी विषम संख्याओं को बढ़ते या घटते क्रम में व्यवस्थित करेंगे, फिर सभी सम संख्याओं को घटते या बढ़ते क्रम में व्यवस्थित करेंगे।
एल्गोरिदम
arrangeN(n)
शुरुआत
यदि N 1 है, तो 1 वापस करें
यदि N 2 या 3 है, तो -1 वापस करें क्योंकि ऐसा कोई क्रमपरिवर्तन मौजूद नहीं है
even_max और odd_max को N से कम या बराबर अधिकतम सम और विषम संख्या के रूप में सेट करें
सभी विषम संख्याओं को अवरोही क्रम में व्यवस्थित करें
सभी सम संख्याओं को अवरोही क्रम में व्यवस्थित करें
समाप्त
उदाहरण
#include <iostream>
using namespace std;
void arrangeN(int N) {
if (N == 1) {
cout << "1";
return;
}
if (N == 2 || N == 3) {
cout << "-1";
return;
}
int even_max = -1, odd_max = -1;
if (N % 2 == 0) {
even_max = N;
odd_max = N - 1;
} else {
odd_max = N;
even_max = N - 1;
}
while (odd_max >= 1) {
cout << odd_max << " ";
odd_max -= 2;
}
while (even_max >= 2) {
cout << even_max << " ";
even_max -= 2;
}
}
int main() {
int N = 8;
arrangeN(N);
return 0;
}
आउटपुट
7 5 3 1 8 6 4 2