#P2346. 四子连棋(Four in a Row)

0
    ID: 8430 传统题 1000ms 128MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>P2346迭代加深搜索迭代加深广度优先搜索状态压缩CSP-S

四子连棋(Four in a Row)

四子连棋(Four in a Row)

题目描述

在一个 4×44\times 4 的棋盘上摆放了 1414 颗棋子,其中有 77 颗白色棋子,77 颗黑色棋子,有两个空白地带,任何一颗黑白棋子都可以向上下左右四个方向移动到相邻的空格,这叫行棋一步,黑白双方交替走棋,任意一方可以先走,如果某个时刻使得任意一种颜色的棋子形成四个一线(包括斜线),这样的状态为目标棋局。

输入格式

从文件中读入一个 4×44\times 4 的初始棋局,黑棋子用 B 表示,白棋子用 W 表示,空格地带用 O 表示。

输出格式

用最少的步数移动到目标棋局的步数。

样例输入 #1

BWBO
WBWB
BWBW
WBWO

样例输出 #1

5

数据范围

棋盘大小固定为 4×44 \times 4,包含 77 颗黑棋(B)、77 颗白棋(W)和 22 个空格(O)。数据保证有解。

知识点与难度

本题涉及的知识点从属于 CSP-S,难度(CF Rating):1700。


测试点分布

Subtask 分值 测试点编号 说明
0 10 1 样例
1 20 2~8 小步数 1~4步 / 特殊: 初始已四子连线0步 / 特殊: 主副对角线成四子
2 15 9~11 Hack: 必须白棋先手方能最快获胜 / Hack: 两空格相邻连续挪动 / Hack: 10步以上深层状态
3 30 12~20 中规模 6~9步 / 大规模 10~14步 状态搜索压力
4 25 21~25 随机 4×4 合法棋局回归

出处:原题链接