প্রথম N প্রাকৃতিক সংখ্যা দেওয়া আছে। এমন একটি পারমুটেশন বের করতে হবে যেন প্রতিটি সংলগ্ন জোড়ার निरপেক্ষ পার্থক্য ১ এর চেয়ে বড় হয়। না থাকলে -1 রিটার্ন করুন।
উপায়: লালচী (greedy) পদ্ধতি। সব বিজোড় সংখ্যা ক্রমবর্ধমান/ক্রমহ্রাসমান ক্রমে সাজান, তারপর সব জোড় সংখ্যা ক্রমহ্রাসমান/ক্রমবর্ধমান ক্রমে সাজান।
অ্যালগরিদম
arrangeN(n)
Begin if N==1 return 1 if N==2 or 3 return -1 even_max, odd_max = N বা N-1 অনুযায়ী while odd_max >= 1 print odd_max, odd_max -= 2 while even_max >= 2 print even_max, even_max -= 2 End
উদাহরণ
#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); }আউটপুট
7 5 3 1 8 6 4 2