ในบทช่วยสอนนี้ เราจะอภิบายโปรแกรมเพื่อหาจำนวนตำแหน่งที่ Modified Knight ไปถึงได้
สำหรับเรื่องนี้ เราจะได้รับกระดานหมากรุก 8x8 งานของเราคือหาจำนวนตำแหน่งที่ Modified Knight จับได้ด้วยจำนวนขั้นตอนที่กำหนด
ตัวอย่าง
#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