摘要:
http://acm.hdu.edu.cn/showproblem.php?pid=1429思路:与一般的广搜的的区别是迷宫多了锁,锁的数量最多为10把,用十位表示。所以最大状态为 1K = 1024 int used[22][22][1100]; 每得到一条钥匙则会转到另一个状态,不同状态的used不会相互干扰。1 if(map[ans.x][ans.y] >= 'a' && map[ans.x][ans.y] <= 'j'){//标记找到钥匙2 ans.key = ans.key | 1<<(map[ans.x][an 阅读全文
摘要:
http://acm.hdu.edu.cn/showproblem.php?pid=1254题意:把箱子推进坑。。。思路:用广搜遍历箱子的四个方向,由于要由人推箱子 人要到箱子后面推。 所以要再用一次广搜,判断人能不能走到箱子后面。(在广搜里面嵌套广搜) 由于向四个方向移动,人和箱子的相对位置是不一样的所以要分别记录四次。 我用的是used[][]数组的值来标记。二进制哈希,上下左右四个方向用4位来标记。 每次仅判断相应的方向是否被使用过。1 void markused(Node a,int i){//标记某一方向为用过2 int x = 1<<i;3 visit[a.... 阅读全文