求转弯最少的走路方式!!!!

#include<stdio.h>

#include<string.h>

#include<queue>

using namespace std;

struct node

{


int x,y;


int step;


friend bool operator<(node a,node b)


{


return a.step>b.step;


}

};

char map[200][200];

int visit[200][200],n,m,p;

int dir[4][2]={0,1,1,0,-1,0,0,-1};

int judge(int x,int y)

{


if(x>=1&&x<=n&&y>=1&&y<=m&&map[x][y]=='.')


return 1;


return 0;

}

int dfs(int sx,int sy,int dx,int dy)

{


priority_queue<node>q;


int i,x,y;


node cur,next;


cur.x=sx;cur.y=sy;cur.step=-1;


q.push(cur);


visit[sx][sy]=1;


if(sx==dx&&sy==dy)


return 1;


while(!q.empty())


{


next=q.top();


q.pop();


for(i=0;i<4;i++)


{


x=next.x+dir[i][0];


y=next.y+dir[i][1];


while(judge(x,y))//同一方向走到底


{


if(visit[x][y]==0)


{


cur.x=x;


cur.y=y;


cur.step=next.step+1;


if(x==dx&&y==dy&&cur.step<=p)


return 1;


q.push(cur);


visit[x][y]=1;


}


x=x+dir[i][0];


y=y+dir[i][1];


}


}


}


return 0;

}

int main()

{


int i,T,sx,sy,dx,dy;


scanf("%d",&T);


while(T--)


{


scanf("%d%d",&n,&m);


memset(visit,0,sizeof(visit));


for(i=1;i<=n;i++)


scanf("%s",map[i]+1);


scanf("%d%d%d%d%d",&p,&sy,&sx,&dy,&dx);


if(dfs(sx,sy,dx,dy))//输入方式坑人


printf("yes\n");


else


printf("no\n");


}


return 0;

}

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1728

hdu 1728 逃离迷宫(dFS+优先队列)的更多相关文章

  1. HDU 1728 逃离迷宫(DFS经典题,比赛手残写废题)

    逃离迷宫 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  2. hdu 1728 逃离迷宫 [ dfs ]

    传送门 逃离迷宫 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  3. HDU 1728 逃离迷宫(DFS||BFS)

    逃离迷宫 Problem Description 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可 ...

  4. hdu 1728 逃离迷宫 bfs记转向

    题链:http://acm.hdu.edu.cn/showproblem.php?pid=1728 逃离迷宫 Time Limit: 1000/1000 MS (Java/Others)    Mem ...

  5. hdu 1728 逃离迷宫 bfs记步数

    题链:http://acm.hdu.edu.cn/showproblem.php?pid=1728 逃离迷宫 Time Limit: 1000/1000 MS (Java/Others)    Mem ...

  6. HDU 1728 逃离迷宫(DFS)

    题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=1728 题目: 逃离迷宫 Time Limit: 1000/1000 MS (Java/Others)  ...

  7. hdu 1728:逃离迷宫(DFS,剪枝)

    逃离迷宫 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  8. HDU 1728 逃离迷宫

    [题目描述 - Problem Description] 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,glo ...

  9. hdu 1728 逃离迷宫 (BFS)

    逃离迷宫 Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submissi ...

  10. hdu 1728 逃离迷宫 BFS加优先队列 DFS()

    http://acm.hdu.edu.cn/showproblem.php?pid=1728 题意就是能否在规定的转弯次数内从起点走到终点.刚走时那步方向不算. 只会bfs(),但想到这题需要记录转弯 ...

随机推荐

  1. [RxJS] Displaying Initial Data with StartWith

    You often need to render out data before you stream begins from a click or another user interaction. ...

  2. HeadFirst设计模式 之 C++实现(二):Observer(观察者模式)

    观察者模式是最经常使用的设计模式之中的一个,[对象之间多对一的依赖关系,当一个对象发生变化时,其会通知全部依赖它的对象].拿订阅报纸和发行报社打例如,报社採集到news制作新的报纸,派送给订阅的客户. ...

  3. ERROR 1 (HY000): Can't create/write to file '/tmp/#sql_909_0.MYI' (Errcode: 13)

    mysql> desc tablename; ERROR 1 (HY000): Can't create/write to file '/tmp/#sql_909_0.MYI' (Errcode ...

  4. ASP.net button类控件click事件中传递参数

    单击Button会同时触发这两个事件,但先执行Click,后执行Command,在button控件中加上参数属性 CommandArgument='' 在click响应函数中可以用以下代码获得传递的参 ...

  5. Java数据输入

    以下是数据输入实例: //以下是数据输入实例 import java.util.Scanner;//导入java.util.Scanner,Scanner首字母大写 public class Test ...

  6. .net 2.0中半角全角错误的解决办法

    VS2005中.net 2.0编译报错如下所示:'System.Windows.Forms.ImeMode' does not contain a definition for 'OnHalf'.只需 ...

  7. 交叉编译安装ARM平台上的Qt

    一.宿主机环境搭建: 编译需要x11库的支持,在Ubuntu下安装命令: sudo apt-get install libx11-dev libxext-dev libxtst-dev 二.下载源码包 ...

  8. Jquery对回复者添加匿名评论选项

    通过prop方法获取checked属性,获取的checked返回值为boolean,选中为true,否则为flase <input type="checkbox" id=&q ...

  9. 不用派生CTreeCtrl不用繁琐的过程 教你如何让CTreeCtrl的每一项有ToolTip提示

    最近工作中需要让CTreeCtrl控件的每一项都有提示信息,于是谷歌百度,爬山涉水,结果是………….在CodeProject里找到一篇文章是把CTreeCtrl派生出新类,重载一些函数自定义内容.使用 ...

  10. 【3】创建一个简单的Laravel例子

    现在我们来创建一个Laravel的例子来帮助理解 1.首先打开app/Http/routes.php文件,在里边写上一条路由: 2.创建一个控制器,有两种方法 ①在app/Http/Controlle ...