2019.7.1
1.数独 这个标记的方法比较特别,行和列很容易标记,33的方格如何标记这是个问题。。。问题都有解决方法,可以把 每个33的方格看成一个整体,可通过这个公式得到 ( i /3 * 3+j / 3 ),不知道怎么得到的,通过这个公式可以把3*3的方格归为一块。标记解决后问题就简单了,dfs一下就可以得到这个数独。。
(dfs+标记) (难)
2. W 11把钥匙可以用二进制的00000000000表示,0代表没有这种钥匙,1代表有这种钥匙。。bfs遇到钥匙时可以通过位运算可以通过或运算得到这把钥匙,遇到门时可以通过与运算判断能不能开门。可以开3维数组标记,在遇到钥匙时需要改变状态,每一个状态都有一个二维的标记数组。。解决不同钥匙的状态问题后,直接bfs即可、
(状压+dfs+标记)(难)
3.O 国际象棋,输出要按字典序排序的第一条路径。在bfs时需注意自己的移动顺序按字典序排列(bfs+坐标)
4 h 找最短路径型问题,但找的时候有的点需2秒通过,直接bfs通过改变某一点的标记数组强行改变路径,不可行。在你进行bfs时即使你改变某点坐标,使该点可以重复走但别的点也不能重复走,不能保证答案是否正确。。我们可以改变标记数组的意义,去标记每个点当前的最短步数,在其它点走到已走过的点时可以通过判断谁用时最少去更新当前点的最下路径,bfs完每个点可得到最短路径(标记+bfs)(中)
5 Z 标记能否翻墙都bfs (bfs+状压)(易)
博客介绍了数独及路径相关问题的算法求解。数独通过特定公式标记3*3方格后用dfs求解;钥匙开门问题用状压、dfs和标记解决;国际象棋路径按字典序排序用bfs;找最短路径问题改变标记数组意义用bfs;翻墙问题用bfs和状压求解。
3080

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



