এই টিউটোরিয়ালে আমরা মডিফাইড নাইট (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