2011年5月9日

摘要: 广搜两遍找出Y和M到每个KFC的最短距离,然后找一个和最小的输出……本来打算两个人一起走,碰头就输出。结果发现如果最短距离的KFC离某一个人很近,但离另一个很远,而又有一个KFC在两人之间的时候,答案就不对了。结果只能用这种笨办法了。#include <stdio.h>#include <string.h>#define INF 9999typedef struct{ int x,y,t;}QUEUE;char map[203][203];const int dirc[4][2] = {{0,1},{0,-1},{1,0},{-1,0}};int n,m,yVisit[ 阅读全文
posted @ 2011-05-09 16:08 死线之蓝 阅读(449) 评论(0) 推荐(0)
摘要: 其实就是广搜+广搜或者广搜+深搜真正移动的是箱子,但是要移动箱子需要满足几个条件。1.移动方向上没有障碍。(废话了……)2.箱子后方没有障碍。3.人可以到达箱子后方的地方。这样就可以写出搜索的条件了 1 #include <stdio.h> 2 #include <string.h> 3 typedef struct{ 4 int bX,bY,pX,pY,t; 5 }BOXQUEUE; 6 typedef struct{ 7 int x,y; 8 }PEOQUEUE; 9 BOXQUEUE boxQ[1000]; 10 PEOQUEUE peoQ[1000]; 11 c 阅读全文
posted @ 2011-05-09 15:59 死线之蓝 阅读(2731) 评论(0) 推荐(1)
摘要: 广搜+状态压缩用一个三维的hash来标记当前位置和拥有的钥匙,由于钥匙一共10把,所以一共有2^10种组合,开到hash[21][21][1025]即可。好像除了用位运算来记录钥匙串没什么好说的了…… 1 #include <stdio.h> 2 #include <string.h> 3 typedef struct{ 4 int x,y,t; 5 int key; 6 }QUEUE; 7 QUEUE q[500000]; 8 const int dirc[4][2] = {{0,1},{0,-1},{1,0},{-1,0}}; 9 int n,m,t;10 bool 阅读全文
posted @ 2011-05-09 15:50 死线之蓝 阅读(400) 评论(0) 推荐(0)

导航