কম্পিউটার

বাইনারি মান ব্যবহার করে হ্যানয়ের টাওয়ারের সমস্যা সমাধানের জন্য C++ প্রোগ্রাম


এই C++ প্রোগ্রামটি বাইনারি মান ব্যবহার করে টাওয়ার অফ হ্যানয় সমস্যার সমাধান প্রদর্শন করে।

প্রতিটি ডিস্কের জন্য একটি বাইনারি ডিজিট আছে।

সবচেয়ে উল্লেখযোগ্য বিট বৃহত্তম ডিস্ক প্রতিনিধিত্ব করে। 0 এর মান নির্দেশ করে যে বৃহত্তম ডিস্কটি প্রাথমিক পেগে রয়েছে, যখন একটি 1 নির্দেশ করে যে এটি চূড়ান্ত পেগে রয়েছে।

বিটস্ট্রিংটি বাম থেকে ডানে পড়া হয় এবং প্রতিটি বিট সংশ্লিষ্ট ডিস্কের অবস্থান নির্ধারণ করতে ব্যবহার করা যেতে পারে।

সংশ্লিষ্ট ডিস্কটি একই পেগে পূর্ববর্তী ডিস্কের উপরে স্ট্যাক করা হয় যদি আগেরটির মতো কিছুটা একই মান থাকে।

যদি এটি ভিন্ন হয় তার মানে হল সংশ্লিষ্ট ডিস্কটি আগেরটির বাম বা ডানদিকে একটি অবস্থান।

অ্যালগরিদম

Begin
   Take the number of disk n as input.
   Declare n and a.
   Make a for loop a = 1 to (1<<n) – 1
   //
   Here, (a & a – 1) = bitwise AND with a and a – 1.
      (a | a – 1) = bitwise OR with a and a – 1.
         Here % means modulus operator.
   //
   Print the result indicating that moving disks from peg number (a & a – 1) % 3 to peg number ((a | a – 1) + 1) % 3
End

উদাহরণ

#include<iostream>
using namespace std;
int main() {
   int n, a;
   cout<<"\nEnter the no of Disks: ";
   cin>>n;
   for (a = 1; a < (1 << n); a++) {
      cout<<"\nDisk Move from Peg "<<(a&a-1)%3 <<" to Peg "<<((a|a-1)+1)%3;
   }
   cout<<"\n";
}

আউটপুট

Enter the no of Disks: 3
Disk Move from Peg 0 to Peg 2
Disk Move from Peg 0 to Peg 1
Disk Move from Peg 2 to Peg 1
Disk Move from Peg 0 to Peg 2
Disk Move from Peg 1 to Peg 0
Disk Move from Peg 1 to Peg 2
Disk Move from Peg 0 to Peg 2

  1. C++ প্রোগ্রামে বাইনারি অনুসন্ধান?

  2. 0-1 Knapsack সমস্যা সমাধানের জন্য C++ প্রোগ্রাম

  3. বাইনারি অনুসন্ধান ব্যবহার করে একটি অ্যারেতে সর্বাধিক উপাদান খুঁজে পেতে C++ প্রোগ্রাম

  4. ডায়নামিক প্রোগ্রামিং ব্যবহার করে ন্যাপস্যাক সমস্যা সমাধানের জন্য C++ প্রোগ্রাম