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

Số Tượng tối đa đặt trên bàn cờ N×N không tấn công nhau C++

Tìm số lượng Tượng (Bishop) tối đa đặt trên bàn cờ N×N sao cho không hai Tượng nào tấn công nhau (Tượng đi đường chéo).

Kết quả

N = 1 → 1
N = 2 → 2
N ≥ 3 → 2N - 2

Giải thích

  • Tượng chỉ di chuyển trên ô cùng màu. Bàn cờ có 2 màu: trắng và đen.
  • Tượng trên ô trắng không bao giờ tấn công Tượng trên ô đen.
  • Trên mỗi màu, tối đa đặt được N-1 Tượng (mỗi đường chéo chính/phụ chỉ 1 Tượng).
  • Tổng = (N-1) + (N-1) = 2N-2.
  • Trường hợp N=1: chỉ 1 ô → 1 Tượng. N=2: 2 đường chéo mỗi màu → 2 Tượng (công thức 2N-2=2 cũng đúng).

Chương trình C++

#include <iostream>
using namespace std;

int maxBishops(int N) {
    if (N <= 0) return 0;
    if (N == 1) return 1;
    return 2 * (N - 1);
}

int main() {
    int N = 15;
    cout << "So Tuong toi da: " << maxBishops(N); // Output: 28
    return 0;
}

Kết quả

So Tuong toi da: 28