Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Đếm tổng số ô Tướng có thể đến trong một nước đi trong C++


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).

Đếm tổng số ô Tướng có thể đến trong một nước đi trong C++

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 row và column cho 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