কম্পিউটার টিউটোরিয়াল

C++ প্রোগ্রাম: বাইনারি ভ্যালু ব্যবহার করে টাওয়ার অফ হানই সমস্যা সমাধান


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

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

সবচেয়ে বড় ডিস্কটি মোস্ট সিগনিফিকেন্ট বিট দ্বারা প্রতিনিধিত্ব করা হয়। ০ মান বোঝায় সবচেয়ে বড় ডিস্কটি প্রাথমিক পেগে আছে, আর ১ বোঝায় সেটি চূড়ান্ত পেগে আছে।

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

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

যদি মান ভিন্ন হয়, তবে সংশ্লিষ্ট ডিস্কটি পূর্বের ডিস্কের এক পজিশন বাম বা ডানে থাকে।

অ্যালগরিদম

শুরু
  ডিস্কের সংখ্যা n ইনপুট নিন।
  n এবং a ডিক্লেয়ার করুন।
  একটি ফর লুপ বানান a = 1 থেকে (1<<n) - 1 পর্যন্ত
  //
  এখানে, (a & a - 1) = a এবং a-1 এর সাথে বিটওয়াইজ AND।
  (a | a - 1) = a এবং a-1 এর সাথে বিটওয়াইজ OR।
  এখানে % মানে মডুলাস অপারেটর।
  //
  ফলাফল প্রিন্ট করুন যা নির্দেশ করবে পেগ নম্বর (a & a - 1) % 3 থেকে পেগ নম্বর ((a | a - 1) + 1) % 3-এ ডিস্ক সরানো।
শেষ

উদাহরণ

#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. C++ প্রোগ্রাম: ০-১ ন্যাপস্যাক প্রব্লেম সমাধান

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

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