Trên bàn cờ được biểu diễn dưới dạng lưới 8x8, chúng ta được cho vị trí của Tướng dưới dạng hàng và cột. Mục tiêu là tìm tổng số ô mà Tướng có thể đến trong một nước đi. Chúng ta biết Tướng có thể di chuyển theo tất cả các hướng (chéo trái lên/xuống và phải lên/xuống).

Ví dụ
Đầu vào
row = 5, column = 4
Đầu ra
Tổng số ô Tướng có thể đến trong một nước đi là: 13
Giải thích
Như hình trên, các ô Tướng có thể đi được là 9.
Đầu vào
row = 1, column = 1
Đầu ra
Tổng số ô Tướng có thể đến trong một nước đi là: 7
Giải thích
Vì đây là vị trí góc, Tướng chỉ có thể đi một đường chéo tối đa 7 ô.
Phương pháp sử dụng
Trong phương pháp này, chúng ta sẽ tính các ô chéo bằng vị trí ngang và dọc tối đa và tối thiểu.
- Nhận số nguyên
rowvàcolumncho vị trí của Tướng. - Hàm
squares_visited(int first, int second)nhận vị trí Tướng và trả về số ô nó có thể đến trong một nước đi. - Khởi tạo biến đếm ban đầu là 0.
- Vị trí tối thiểu bên trái là min của hàng hoặc cột - 1.
- Vị trí tối đa bên trái là 8 - max của hàng hoặc 9 - cột.
- Vị trí tối thiểu bên phải là min của hàng hoặc 9 - cột - 1.
- Vị trí tối đa bên phải là 8 - max của hàng hoặc cột.
- Tổng ô sẽ là tổng các vị trí tính được ở trên.
- Trả về biến đếm làm kết quả.
Ví dụ mã
#include <bits/stdc++.h>
using namespace std;
int squares_visited(int first, int second) {
int count = 0;
int min_left = min(first, second) - 1;
int max_left = 8 - max(first, 9 - second);
int max_right = 8 - max(first, second);
int min_right = min(first, 9 - second) - 1;
count = min_left + min_right + max_right + max_left;
return count;
}
int main() {
int row = 3, column = 3;
cout << "Tổng số ô Tướng có thể đến trong một nước đi là: " << squares_visited(row, column);
return 0;
}
Đầu ra
Nếu chạy mã trên, sẽ tạo ra đầu ra sau:
Tổng số ô Tướng có thể đến trong một nước đi là: 11