摘要:
题目描述;数独游戏的内核代码八数码问题;编号为1到8的8个正方形滑块被摆成3行3列;(有一个格子留空);每次可以把与空格相邻的滑块(有公共边才算相邻)移到空格中;而它原来的位置就成为了新的空格;给定初始局面和目标局面(用0表示空格);你的任务死计算出最少的移动步数;和移动过程;如果无法到达目标局面,则输出-1;------------------------------------------------------------------------------接前面两个博客,在这个博客里,我们尝试改变我们使用的判重的数据结构;在第一个博客里我们用的是数组,也就是顺序结构,速度非常的慢,在第 阅读全文
摘要:
题目描述;数独游戏的内核模拟八数码问题;编号为1到8的8个正方形滑块被摆成3行3列;(有一个格子留空);每次可以把与空格相邻的滑块(有公共边才算相邻)移到空格中;而它原来的位置就成为了新的空格;给定初始局面和目标局面(用0表示空格);你的任务死计算出最少的移动步数;和移动过程;如果无法到达目标局面,则输出-1;在这节里我们使用c++封装的stl库里面的set类库来帮助我们进行判断是否访问过的操作;这里用vis.count(s)的返回值来判断s是否在栈里面用vis.insert(s)将s插入到vis里面; 1 #include <iostream> 2 #include <fs 阅读全文
摘要:
题目描述;数独游戏的内核模拟八数码问题;编号为1到8的8个正方形滑块被摆成3行3列;(有一个格子留空);每次可以把与空格相邻的滑块(有公共边才算相邻)移到空格中;而它原来的位置就成为了新的空格;给定初始局面和目标局面(用0表示空格);你的任务死计算出最少的移动步数;和移动过程;如果无法到达目标局面,则输出-1;2641375881273642这个问题也是要分步骤实现的,自然也涉及到状态的问题,和我的前一篇博客一样,使用的是广度优先遍历这样可以找到最少的步数;众所周知的是BFS算法之于树和之于图是不太一样的,因为树一旦往下走便不必担心访问到已经访问过的结点,而图呢由于有环的存在,所以会回到之前访 阅读全文