ภาพรวมปัญหา
หาจำนวนบิชอป (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