Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

จำนวนบิชอปสูงสุดบนกระดานหมากรุก N×N ใน C++


ภาพรวมปัญหา

หาจำนวนบิชอป (Bishop) สูงสุดที่วางบนกระดานหมากรุก N×N ได้ โดยที่ไม่มีบิชอปสองตัวโจมตีกัน

ตัวอย่าง

Input: N = 2
Output: 2

Input: N = 5
Output: 8

หลักการ

  • บิชอปเดินทางแนวทแยง
  • สูตร: N=1 -> 1, N>1 -> 2×(N-1)
  • วางบนขอบสองด้านตรงข้าม (สีต่างกัน)

ตัวอย่างโค้ด C++

#include <iostream>

int totalBishops(int n) {
    int bishops = 0;
    if (n < 1) bishops = 0;
    else if (n == 1) bishops = 1;
    else bishops = 2 * (n - 1);
    return bishops;
}

int main() {
    int N = 15;
    cout << totalBishops(N);
    return 0;
}

ผลลัพธ์

28