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

C++-এ 1 x m আকারের টাইল দিয়ে n x m আকারের ফ্লোর টাইল করার পদ্ধতির সংখ্যা গণনা


দুটি সংখ্যা n এবং m দেওয়া আছে যেগুলো একটি ঘরের ফ্লোরের দৈর্ঘ্য এবং প্রস্থ নির্দেশ করে। লক্ষ্য হলো এই ফ্লোরকে 1xm আকারের টাইল দিয়ে কতভাবে টাইল করা যায় সেটি বের করা।

উদাহরণ ১

ইনপুট

n=3 m=2

আউটপুট

১ x m আকারের টাইল দিয়ে n x m আকারের ফ্লোর টাইল করার পদ্ধতির সংখ্যা: 3

ব্যাখ্যা

পদ্ধতিগুলো হবে তিনটি ১x২ টাইল নিচের ছবির মতো সাজানো:

C++-এ 1 x m আকারের টাইল দিয়ে n x m আকারের ফ্লোর টাইল করার পদ্ধতির সংখ্যা গণনা

উদাহরণ ২

ইনপুট

n=3 m=3

আউটপুট

১ x m আকারের টাইল দিয়ে n x m আকারের ফ্লোর টাইল করার পদ্ধতির সংখ্যা: ২

ব্যাখ্যা

পদ্ধতিগুলো হবে তিনটি ১x৩ টাইল খাড়া এবং বাঁকা করে সাজানো। মাত্র দুই পদ্ধতি।

প্রয়োগ করা পদ্ধতি

এই পদ্ধতিতে n-এর মান চেক করা হয়। যদি n, m-র চেয়ে ছোট হয় এবং মান ১ হয়, তবে ফ্লোরের উপরে ১xm আকারের একটিই টাইল থাকবে।

যদি n, m-র সমান হয়, তবে ২টি পদ্ধতি হবে: n টি ১xm টাইল সব খাড়া এবং সব বাঁকা করে রাখা। যদি n, m-র চেয়ে বড় হয়, তবে আগের পদ্ধতিগুলো ব্যবহার করে ways[n-1] + ways[m-1] দিয়ে পদ্ধতি গণনা করা হয়।

  • ফ্লোর এবং টাইলের মাপের জন্য ইন্টিজার m এবং n নিন।

  • ways_tile_floor(int N, int M) ফাংশনটি মাপগুলো গ্রহণ করে টাইল করার পদ্ধতির সংখ্যা রিটার্ন করে।

  • N+1 দৈর্ঘ্যের অ্যারে arr[] নিন ইনডেক্স i=বর্তমান N এর জন্য টাইল কাউন্ট রাখার জন্য।

  • arr[0]-এ টাইল ০, তাই arr[0]=0।

  • for লুপ দিয়ে i=1 থেকে i=N পর্যন্ত arr[] ট্রুভার্স করুন। প্রতিটি arr[i]-এর জন্য, যদি i>M হয় তবে আগের মানগুলো ব্যবহার করে কাউন্ট করুন: arr[i] = arr[i-1] + arr[i-M]।

  • যদি i=1 অথবা i হয়, তবে arr[i] ১ সেট করুন।

  • যদি i=M হয়, তবে arr[i]=2 সেট করুন।

  • for লুপ শেষে arr[N]-এ টাইল সাজানোর পদ্ধতির কাউন্ট থাকবে।

  • arr[N] রিটার্ন করুন ফলাফল হিসেবে।

উদাহরণ কোড

#include <bits/stdc++.h> 
using namespace std; 

int ways_tile_floor(int N, int M) {
    int arr[N + 1]; 
    arr[0] = 0; 
    
    for (int i = 1; i <= N; i++) {
        if (i > M) {
            arr[i] = arr[i - 1] + arr[i - M]; 
        } else if (i < M || i == 1) {
            arr[i] = 1; 
        } else {
            arr[i] = 2; 
        } 
    } 
    
    return arr[N]; 
} 

int main() { 
    int n = 3, m = 2; 
    cout << "১ x m আকারের টাইল দিয়ে n x m আকারের ফ্লোর টাইল করার পদ্ধতির সংখ্যা: " << ways_tile_floor(n, m); 
    return 0; 
}

আউটপুট

উপরোক্ত কোডটি রান করলে নিচের আউটপুটটি আসবে:

১ x m আকারের টাইল দিয়ে n x m আকারের ফ্লোর টাইল করার পদ্ধতির সংখ্যা: 3

  1. C++-এ ট্রেন স্টপেজ স্টেশন সংখ্যা বের করুন

  2. OpenCV-এ C++ ব্যবহার করে চেহারার সংখ্যা গণনা করা

  3. OpenCV-এ C++ ব্যবহার করে মোট ফ্রেম সংখ্যা গণনা করা

  4. C++-এ দिये गये আয়তের ভেতরে সম্ভাব্য রম্বসের সংখ্যা গণনা