1
0
mirror of https://gitee.com/coder-xiaomo/leetcode-problemset synced 2025-01-30 12:10:26 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee

33 lines
1.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

在大小为 `n * m` 的棋盘中,有两种不同的棋子:黑色,红色。当两颗颜色不同的棋子同时满足以下两种情况时,将会产生魔法共鸣:
- 两颗异色棋子在同一行或者同一列
- 两颗异色棋子之间恰好只有一颗棋子
> 注:异色棋子之间可以有空位
由于棋盘上被施加了魔法禁制,棋盘上的部分格子变成问号。`chessboard[i][j]` 表示棋盘第 `i``j` 列的状态:
- 若为 `.` ,表示当前格子确定为空
- 若为 `B` ,表示当前格子确定为 黑棋
- 若为 `R` ,表示当前格子确定为 红棋
- 若为 `?` ,表示当前格子待定
现在,探险家小扣的任务是确定所有问号位置的状态(留空/放黑棋/放红棋),使最终的棋盘上,任意两颗棋子间都 **无法** 产生共鸣。请返回可以满足上述条件的放置方案数量。
**示例1**
> 输入:`n = 3, m = 3, chessboard = ["..R","..B","?R?"]`
>
> 输出:`5`
>
> 解释:给定的棋盘如图:
>![image.png](https://pic.leetcode.cn/1681714583-unbRox-image.png){:height=150px}
> 所有符合题意的最终局面如图:
>![image.png](https://pic.leetcode.cn/1681714596-beaOHK-image.png){:height=150px}
**示例2**
> 输入:`n = 3, m = 3, chessboard = ["?R?","B?B","?R?"]`
>
> 输出:`105`
**提示:**
- `n == chessboard.length`
- `m == chessboard[i].length`
- `1 <= n*m <= 30`
- `chessboard` 中仅包含 `"."、"B"、"R"、"?"`