问题分析
这是一个经典的国际象棋皇后攻击范围问题:
-皇后可以攻击同一行、同一列、两条对角线上的所有格子。
-我们需要根据输入的皇后位置,标记棋盘上的三种状态:Q(皇后位置)、#(被攻击到)、.(安全)。
-数据范围 n ≤ 100,直接暴力模拟即可,时间复杂度 O(n²),完全满足要求。
核心思路
1.初始化棋盘:创建一个 n×n 的二维数组,初始值为 .。
2.标记皇后位置:将输入的 (x,y) 位置设为 Q,同时记录被攻击的行、列、对角线。
标记攻击范围:
3.对每个皇后,遍历其所在行、列、两条对角线,将非 Q 的位置设为 #。
4.输出棋盘:按行打印最终状态。
C++代码: