কম্পিউটার

C++ এ ডোমিনো এবং ট্রোমিনো দিয়ে এলাকা পূরণ করার জন্য কনফিগারেশনের সংখ্যা গণনা করার প্রোগ্রাম রয়েছে


ধরুন আমাদের দুটি আকার আছে, ডমিনো এবং ট্রোমিনো৷ ডোমিনো 2 x 1 আকৃতির এবং ট্রোমিনোগুলি 'L' আকৃতির মতো। তাদের নিচের মত ঘোরানো যেতে পারে −

C++ এ ডোমিনো এবং ট্রোমিনো দিয়ে এলাকা পূরণ করার জন্য কনফিগারেশনের সংখ্যা গণনা করার প্রোগ্রাম রয়েছে

যদি আমাদের একটি সংখ্যা n থাকে, তাহলে এই দুই ধরনের টুকরা দিয়ে একটি 2 x n বোর্ড পূরণ করার জন্য আমাদের কনফিগারেশনের সংখ্যা খুঁজে বের করতে হবে। আমরা টাইলিংয়ের ক্ষেত্রে জানি, প্রতিটি বর্গক্ষেত্র একটি টালি দ্বারা আবৃত করা আবশ্যক।

সুতরাং যদি ইনপুট 3 হয়, তাহলে আউটপুট হবে 5। সুতরাং বিন্যাসগুলি [XYZ XXZ XYY XXY XYY] এবং [XYZ YYZ XZZ XYY XXY] হতে পারে, এখানে বিভিন্ন টাইলের জন্য বিভিন্ন অক্ষর ব্যবহার করা হয়েছে।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • N + 5 আকারের dp নামে একটি অ্যারে তৈরি করুন, সেট করুন dp[1] :=1, dp[2] :=2 এবং dp[3] :=5

  • আমি রেঞ্জ 4 থেকে N

    এর জন্য
    • dp[i] :=2*dp[i − 1] + dp[i − 3]

  • dp[N>

    ফেরত দিন

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
int add(int a, int b){
   return ((a % MOD) + (b % MOD)) % MOD;
}
class Solution {
   public:
   int solve(int N) {
      vector <int> dp(N + 5);
      dp[1] = 1;
      dp[2] = 2;
      dp[3] = 5;
      for(int i = 4; i <= N; i++){
         dp[i] = add(2 * dp[i − 1], dp[i − 3]);
      }
      return dp[N];
   }
};
main(){
   Solution ob;
   cout << (ob.solve(3));
}

ইনপুট

3

আউটপুট

5

  1. উপাদানগুলিকে গণনা করুন যাতে C++ এ X এর থেকে বেশি বা সমান মান সহ ঠিক X উপাদান রয়েছে

  2. C++ এ একটি অ্যারেতে জোড় এবং বিজোড় উপাদানের সংখ্যা গণনা করুন

  3. শুধুমাত্র C++ এ 3 এবং 8 সংখ্যা সহ সংখ্যায় রূপান্তর করুন

  4. আমরা পাইথনে 2 x 1 ডমিনো দিয়ে 3 x n বক্স পূরণ করতে পারি তার সংখ্যা গণনা করার প্রোগ্রাম