একটি ২D ম্যাট্রিক্স দেওয়া আছে যার মাত্রা row X col। লক্ষ্য হলো ম্যাট্রিক্সটি কতভাবে ট্রুভার্স করা যায় সেল 0,0 থেকে সেল row, col পর্যন্ত শুধু ডান এবং নিচে যেতে পারা সাপেক্ষে (অর্থাৎ প্রথম মুভ হতে পারে 0,0 থেকে 0,1 (নিচে) অথবা 1,0 (ডানে) কিন্তু 1,1 (ডায়াগোনাল) নয়)।
উদাহরণ ১
ইনপুট
col = 2; row = 4
আউটপুট
ম্যাট্রিক্স ট্রুভার্স করার পদ্ধতির সংখ্যা: 4
ব্যাখ্যা
সেল 0,0 থেকে 2,4 পর্যন্ত যাওয়ার পদ্ধতিগুলো নিচে দেখানো হলো:

উদাহরণ ২
ইনপুট
col = 4; row = 3
আউটপুট
ম্যাট্রিক্স ট্রুভার্স করার পদ্ধতির সংখ্যা: 10
ব্যাখ্যা
সমস্যাটিকে ছোট রিকার্সনে ভাগ করব। col=3, row=2 এর জন্য পদ্ধতি, তারপর col=2, row=1... col=1 বা row=1 হলে উত্তর ১ (শুধু ডানে বা শুধু নিচে যেতে পারা)।
প্রয়োগ করা পদ্ধতি
এই পদ্ধতিতে রিকার্সন ব্যবহার করা হয়। শেষে row বা col ১ হলে শুধু একটি পদ্ধতি থাকে যা হলো সিড়ে ডানে যাওয়া অথবা সিড়ে নিচে যাওয়া। এটি রিকার্সনের টার্মিনেটিং কন্ডিশন।
ম্যাট্রিক্সের মাত্রার জন্য ইন্টিজার
row,colনিন।ways_traverse_matrix(int row, int col)ফাংশনটি মাত্রা গ্রহণ করে পদ্ধতির সংখ্যা রিটার্ন করে।row==1হলে ১ রিটার্ন করুন।col==1হলে ১ রিটার্ন করুন।অন্যথায় রিকার্সন দিয়ে পদ্ধতি ক্যালকুলেট করুন:
ways_traverse_matrix(temp_1, col) + ways_traverse_matrix(row, temp_2)।এখানে
temp_1 = পূর্বের row নম্বরএবংtemp_2 = পূর্বের column নম্বর।শেষে মোট পদ্ধতির কাউন্ট পাওয়া যাবে।
উদাহরণ কোড
#include <bits/stdc++.h>
using namespace std;
int ways_traverse_matrix(int row, int col) {
if (row == 1) {
return 1;
} else if(col == 1) {
return 1;
} else {
int temp_1 = row - 1;
int temp_2 = col - 1;
return ways_traverse_matrix(temp_1, col) + ways_traverse_matrix(row, temp_2);
}
}
int main() {
int col = 2;
int row = 2;
cout << "ম্যাট্রিক্স ট্রুভার্স করার পদ্ধতির সংখ্যা: " << ways_traverse_matrix(row, col);
return 0;
}
আউটপুট
উপরোক্ত কোডটি রান করলে নিচের আউটপুটটি আসবে:
ম্যাট্রিক্স ট্রুভার্স করার পদ্ধতির সংখ্যা: 2