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

C++-এ মডিফাইড নাইটের পৌঁছানো সম্ভাব্য পজিশন গণনা


এই টিউটোরিয়ালে আমরা মডিফাইড নাইট (Modified Knight) এর পৌঁছানো সম্ভাব্য পজিশনের সংখ্যা বের করার প্রোগ্রাম নিয়ে আলোচনা করব।

এই জন্য আমাদের একটি 8x8 চেসবোর্ড দেওয়া থাকবে। আমাদের কাজ হলো দেওয়া স্টেপ সংখ্যা দিয়ে মডিফাইড নাইট কতগুলো পজিশন ক্যাপচার করতে পারে সেটা বের করা।

উদাহরণ

#include <bits/stdc++.h> using namespace std; //finding the positions void findSteps(int current_row, int current_column,int curr, int board_size, int steps,int* visited){    //bound checking    if (current_row >= board_size || current_row < 0       || current_column >= board_size || current_column < 0       || curr > steps) {       return;    }    if (curr == steps) {       *((visited + (current_row)*board_size) + current_column) = 1;       return;    }    findSteps(current_row - 2, current_column - 1,curr + 1, board_size, steps, visited);    findSteps(current_row - 2, current_column + 1,curr + 1, board_size, steps, visited);    findSteps(current_row - 1, current_column - 2,curr + 1, board_size, steps, visited);    findSteps(current_row - 1, current_column - 1,curr + 1, board_size, steps, visited);    findSteps(current_row - 1, current_column + 1,curr + 1, board_size, steps, visited);    findSteps(current_row - 1, current_column + 2,curr + 1, board_size, steps, visited);    findSteps(current_row + 1, current_column - 2,curr + 1, board_size, steps, visited);    findSteps(current_row + 1, current_column - 1,curr + 1, board_size, steps, visited);    findSteps(current_row + 1, current_column + 1,curr + 1, board_size, steps, visited);    findSteps(current_row + 1, current_column + 2,curr + 1, board_size, steps, visited);    findSteps(current_row + 2, current_column - 1,curr + 1, board_size, steps, visited);    findSteps(current_row + 2, current_column + 1,curr + 1, board_size, steps, visited);    return; } int countSteps(int current_row, int current_column,int board_size, int steps){    int visited[board_size][board_size];    for (int i = 0; i < board_size; i++) {       for (int j = 0; j < board_size; j++) {          visited[i][j] = 0;       }    }    int answer = 0;    findSteps(current_row, current_column, 0,board_size, steps, (int*)visited);    for (int i = 0; i < board_size; i++) {       for (int j = 0; j < board_size; j++) {          if (visited[i][j] == 1) {             answer++;          }       }    }    return answer; } int main(){    int board_size = 8, steps = 1;    int current_row = 4, current_column = 4;    cout << countSteps(current_row, current_column,board_size, steps);    return 0; }

আউটপুট

12

  1. C++-এ N ডিজিটের সকল সংখ্যা যাতে num + Rev(num) = 10^N - 1 হয় সেটির গণনা

  2. C++-এ A % X = B সমীকরণ সन्तুষ্টকারী X এর সম্ভাব্য মানগুলোর সংখ্যা

  3. C++-এ একটি বিশপ এক মুভে যেসব স্কয়ার ভিজিট করতে পারে সেটির সংখ্যা গণনা

  4. C++-এ ডিরেঞ্জমেন্ট (Derangement) গণনা