हमारे पास पहली एन प्राकृतिक संख्याएं हैं। हमारा कार्य उनमें से एक क्रमपरिवर्तन प्राप्त करना है जहां प्रत्येक दो लगातार तत्वों के बीच पूर्ण अंतर> 1 है। यदि ऐसा कोई क्रमपरिवर्तन मौजूद नहीं है, तो वापसी -1।
दृष्टिकोण सरल है। हम लालची दृष्टिकोण का उपयोग करेंगे। हम सभी विषम संख्याओं को बढ़ते या घटते क्रम में व्यवस्थित करेंगे, फिर सभी सम संख्याओं को घटते या बढ़ते क्रम में व्यवस्थित करेंगे
एल्गोरिदम
व्यवस्थाएन(एन)
Begin if N is 1, then return 1 if N is 2 or 3, then return -1 as no such permutation is not present even_max and odd_max is set as max even and odd number less or equal to n arrange all odd numbers in descending order arrange all even numbers in descending order End
उदाहरण
#include <iostream> using namespace std; void arrangeN(int N) { if (N == 1) { //if N is 1, only that will be placed cout << "1"; return; } if (N == 2 || N == 3) { //for N = 2 and 3, no such permutation is available cout << "-1"; return; } int even_max = -1, odd_max = -1; //find max even and odd which are less than or equal to N if (N % 2 == 0) { even_max = N; odd_max = N - 1; } else { odd_max = N; even_max = N - 1; } while (odd_max >= 1) { //print all odd numbers in decreasing order cout << odd_max << " "; odd_max -= 2; } while (even_max >= 2) { //print all even numbers in decreasing order cout << even_max << " "; even_max -= 2; } } int main() { int N = 8; arrangeN(N); }
आउटपुट
7 5 3 1 8 6 4 2