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

C++-এ বাল্ব সুইচার II


ধরুন একটি ঘরে n টি বাতি থাকে যা প্রাথমিকভাবে অন থাকে এবং দেওয়ালে ৪টি বাটন রয়েছে। বাটনগুলোর দিকে ঠিক m بار অজানা অপারেশন করার পরে, আমাদের n টি বাতির কত ধরনের স্ট্যাটাস হতে পারে তা ফেরত দিতে হবে। n টি বাতিকে [1, 2, 3 ..., n] নম্বর দিয়ে লেবেল করা হয়েছে, এই ৪টি বাটনের ফাংশন নিম্নরূপ −

  • সব বাতি ফ্লিপ করুন।
  • সম সংখ্যা वाली বাতি ফ্লিপ করুন।
  • বিজোড় সংখ্যা वाली বাতি ফ্লিপ করুন।
  • (3k + 1) নম্বর वाली বাতি ফ্লিপ করুন, k = 0, 1, 2, ...

এখন যদি n = 3 এবং m = 1 হয়, তবে ৪টি অপারেশন হবে, এগুলি হল [off, on, off], [on, off, on], [off, off, off], [off, on, on]

এটি সমাধান করতে আমরা নিম্নলিখিত ধাপগুলি অনুসরণ করব −

  • যদি n ০ হয় বা m ০ হয়, তবে ১ ফেরত দিন
  • যদি n ১ হয়, তবে ২ ফেরত দিন
  • যদি n ২ হয়, তবে m ১ হলে ৩ ফেরত দিন, অন্যথায় ৪
  • যদি m ১ হয়, তবে ৪ ফেরত দিন
  • যদি m ২ হয়, তবে ৭ ফেরত দিন, অন্যথায় ৮।

বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশনটি দেখুন −

উদাহরণ

#include <bits/stdc++.h> using namespace std; class Solution {    public:    int flipLights(int n, int m) {       if (m == 0 || n == 0) return 1;       if (n == 1) return 2;       if (n == 2) return m == 1? 3:4;       if (m == 1) return 4;       return m == 2? 7:8;    } }; main(){    Solution ob;    cout << (ob.flipLights(3, 1)); }

ইনপুট

3 1

আউটপুট

4

  1. C++-এ বাল্ব স্যুইচার III সমস্যা সমাধান

  2. C++-এ N-কুইন (N-Queen) সমস্যা সমাধান

  3. C++-এ void ফাংশন থেকে রিটার্ন (Return from void functions in C++)

  4. C++-এ "অবজেক্ট রিটার্ন" কীভাবে করবেন?