দুটি পূর্ণসংখ্যা N ও K দেওয়া থাকলে, ১ থেকে N পর্যন্ত পারমিউটেশন বানিয়ে সেটিকে এমনভাবে রি-অ্যারেঞ্জ করতে হবে যাতে প্রতিটি এলিমেন্ট তার আসল পজিশন থেকে K দূরত্বে থাকে।
উদাহরণ
ইনপুট − n = 20, k = 2
আউটপুট − 3 4 1 2 7 8 5 6 11 12 9 10 15 16 13 14 19 20 17 18
ইনপুট − n = 10, k = 3
আউটপুট − Not Possible
প্রোগ্রামে ব্যবহৃত পদ্ধতি
ইনপুট N, K নিন।
Rearrangement(int n, int k)ফাংশন কল করুন।temp = n % (2*k)। যদিtemp != 0হয়, "Not Possible"।ptr[n+1]অ্যারেতে ১ থেকে N রাখুন।for i=1 to n step 2*k→for j=1 to k→swap(ptr[i+j-1], ptr[k+i+j-1])।ptrপ্রিন্ট করুন।
উদাহরণ কোড
#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, 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