呵呵, 我用的是循环遍历, 每层加剪枝, 相当于bfs吧!
不过比bfs用的空间少的多.
Rank:93 | 6223070 | Memory:164K | Time:0MS | C++ | 1950B | 2009-12-09 09:45:29 |
code2:
总结一下:
这种用16位的二进制数表示4*4方格所有状态的方法也很巧妙.
具体说来,用16位二进制数表示一个4*4方格的当前状态,
通过对这个16位二进制数的任意一位进行变化后,进入队列.
不过效率显然不如用for循环+剪枝来的快, 因为先对一行的状态
进行遍历, 剪枝会多一些.
可以发现, bfs的精髓是: 采用二进制数做状态的转移的量. bfs不过是
保存状态和寻找他的下一状态.