摘要: 问题描述在一个n行m列的迷宫中,每一步只能向上、下、左、右中任意方向走一格,迷宫中有围墙的地方是无法到达的。从起点s开始,能否刚好走t步,到达e。例如在下面5行5列的迷宫中,能否恰好经过9步,从s走到e。初始位置在s上,#是围墙。奇偶剪枝设起点s的坐标为(sx,sy),终点e的坐标为(ex,ey);对s的一次操作为对sx或sy进行+1或-1;若经过t次操作后,s的坐标刚好等于e,则说从s经过t步可以到达e。在理想情况下,s到e需要的最小步数为mm=|ex-sx|+|ey-sy|若t=m时,从s到e的行走路径由两部分组成,一部分为需要走的最少步数m;另一部分是为了使得刚好行走t步到达e,所需要走 阅读全文
posted @ 2013-07-31 21:20 执着追求的IT小小鸟 阅读(305) 评论(0) 推荐(0)
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1010这题因为找寻的时间有限,所以用dfs比较直接,另外,还用到了一个犀利的奇偶剪枝#include#include#include#includeint n,m,t;char map[8][8];int dir[4][2]={{1,0},{-1,0},{0,-1},{0,1}};int flag;struct node{ int x,y;}s,e;int dfs(struct node x,int time){ int a,b,i,j,tt; struct node next; ... 阅读全文
posted @ 2013-07-31 21:17 执着追求的IT小小鸟 阅读(195) 评论(0) 推荐(0)
摘要: #include#include#includeint n,m,k,x1,y1,x2,y2,vis[110][110];int fx[4][2]={{1,0},{-1,0},{0,-1},{0,1}};char hash[101][101];struct node{ int x,y;//x表示列,y表示行 int turn;//转弯的次数 }q[100100],s,next; int pd(int x,int y){ if(x=n||y=m) return 0; return 1;}int bfs(){ int head,tail,w,x,y,i; ... 阅读全文
posted @ 2013-07-31 16:11 执着追求的IT小小鸟 阅读(238) 评论(0) 推荐(0)