প্রদত্ত সমস্যাটিতে, আমাদের একটি অ্যারে দেওয়া হয়েছে, এবং আমাদেরকে একটি বিপরীত অ্যালগরিদম ব্যবহার করে d উপাদানগুলির দ্বারা অ্যারেটি ঘোরাতে হবে, উদাহরণস্বরূপ −
Input : arr[] = [1, 2, 3, 4, 5, 6, 7], d = 2 Output : arr[] = [3, 4, 5, 6, 7, 1, 2] Explanation : As you can see we have to rotate this array by d = 2 but our main task is to achieve this by using a reversal technique.
আমরা বিপরীত কৌশল দ্বারা অ্যারের ঘূর্ণনের জন্য কিছু গণনা করি, এবং আমরা উপসংহারে পৌঁছাই −
- প্রথমে, আমরা অ্যারের প্রথম d উপাদানগুলিকে বিপরীত করি।
- দ্বিতীয়, আমরা অবশিষ্ট উপাদানগুলোকে বিপরীত করি।
- তৃতীয়, আমরা পুরো অ্যারেকে বিপরীত করি।
এবং এই তিনটি ধাপ প্রয়োগ করে, আমরা আমাদের ঘোরানো অ্যারে পেতে পারি।
সমাধান খোঁজার পদ্ধতি
এই সমস্যায়, প্রথমত, আমরা উপাদানগুলিকে বিপরীত করার জন্য একটি ফাংশন তৈরি করতে যাচ্ছি; এখন আমরা উপরে দেওয়া ধাপগুলি অনুসরণ করি
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
void reverseArray(int arr[], int start, int end) { // our reversal algorithm
while (start < end) { // if start becomes equal to end we break the loop
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
return ;
}
void Rotate(int arr[], int d, int n) { // rotation function
if (d == 0) // no rotation required
return;
d = d % n; // when d becomes equal to n so our array comes to its original form
reverseArray(arr, 0, d - 1); // reversing first d elements
reverseArray(arr, d, n - 1); // reversing the remaining elements
reverseArray(arr, 0, n - 1); // reversing the whole array
return ;
}
int main() {
int arr[] = { 1, 2, 3, 4, 5, 6, 7 }; // given array
int n = sizeof(arr) / sizeof(arr[0]); // size of our array
int d = 2;
Rotate(arr, d, n);
for(int i = 0; i < n; i++) // printing the array
cout << arr[i] << " ";
cout << "\n";
return 0;
} আউটপুট
3 4 5 6 7 1 2
উপরের কোডের ব্যাখ্যা
উপরের পদ্ধতিতে, আমরা প্রথমে আমাদের রিভার্সাল টেকনিক তৈরি করি, যা তিনটি প্যারামিটার নেবে, যেমন, অ্যারে, স্টার্টিং ইনডেক্স এবং এন্ডিং ইনডেক্স, এবং আমাদের অ্যারেকে শুরু থেকে শেষ পর্যন্ত রিভার্স করবে। আমরা যেমন আগে আমাদের অ্যালগরিদম তৈরি করেছি, আমরা এই ফাংশনটি ব্যবহার করে সেই অ্যালগরিদমটি প্রয়োগ করতে যাচ্ছি। আমরা প্রথমে প্রথম d উপাদান বিপরীত. এখন দ্বিতীয়ত, আমরা অবশিষ্ট উপাদান বিপরীত, এবং শেষ পর্যন্ত, আমরা পুরো অ্যারে বিপরীত. ফলস্বরূপ, আমাদের অ্যারেটি d দ্বারা ঘোরানো হয়। রোটেট ফাংশনে, আমরা d =d % n তৈরি করছি। এর কারণ হল যদি আমরা একটি অ্যারের প্রথম n উপাদানগুলি ঘোরান, তাহলে আমরা যে উত্তরটি পাব তা আগের মতোই হবে, তাই আমরা n দিয়ে d এর একটি মোড তৈরি করি৷
উপসংহার
এই নিবন্ধে, আমরা অ্যারে ঘূর্ণনের জন্য বিপরীত অ্যালগরিদম প্রয়োগ করার জন্য একটি সমস্যার সমাধান করি। আমরা এই সমস্যার জন্য C++ প্রোগ্রাম এবং সম্পূর্ণ পদ্ধতি (সাধারণ) শিখেছি যার মাধ্যমে আমরা এই সমস্যার সমাধান করেছি। আমরা অন্যান্য ভাষা যেমন সি, জাভা, পাইথন এবং অন্যান্য ভাষায় একই প্রোগ্রাম লিখতে পারি। আমরা আশা করি আপনার এই নিবন্ধটি সহায়ক হবে৷