黑白棋游戏
题目描述
黑白棋游戏的棋盘由 4 × 4 4 \times 4 4×4 方格阵列构成。棋盘的每一方格中放有 1 1 1 枚棋子,共有 8 8 8 枚白棋子和 8 8 8 枚黑棋子。这 16 16 16 枚棋子的每一种放置方案都构成一个游戏状态。在棋盘上拥有 1 1 1 条公共边的 2 2 2 个方格称为相邻方格。一个方格最多可有 4 4 4 个相邻方格。在玩黑白棋游戏时,每一步可将任何 2 2 2 个相邻方格中棋子互换位置。对于给定的初始游戏状态和目标游戏状态,编程计算从初始游戏状态变化到目标游戏状态的最短着棋序列。
输入格式
输入文件共有 8 8 8 行。前四行是初始游戏状态,后四行是目标游戏状态。每行 4 4 4 个数分别表示该行放置的棋子颜色。“ 0 0 0 ”表示白棋;“ 1 1 1 ”表示黑棋。
输出格式
输出 n n n,表示最少需要多少步才能到达目标状态。
样例 #1
样例输入 #1
1111
0000
1110
0010
1010
0101
1010
0101
样例输出 #1
4
提示
提示就是没有提示awa
题解
这是一道非常直白的广度优先搜索问题,所以只要套模板即可,模板可以参考我之前的文章。
简单分析一下,每次有24种交换的可能,即每一行的 第一个 第二个 第二个 第三个和第三个 第四个交换,每一列的第一个 第二个 第二个 第三个和第三个 第四个交换。那么只要根据这个构建出一棵树就好啦。
废话不多说,上代码!
#include <iostream>
#

这是一篇关于黑白棋游戏的编程题解,利用广度优先搜索(BFS)算法解决从初始游戏状态到达目标状态的最短着棋序列问题。题目描述了棋盘的构成和操作规则,输入和输出格式,以及样例。作者分享了代码实现,并提到在某些环境下编译可能出现问题,建议使用数组替代bitset进行优化。
最低0.47元/天 解锁文章
8691

被折叠的 条评论
为什么被折叠?



