HDU 1728
来源:互联网 发布:淘宝网400电话 编辑:程序博客网 时间:2024/06/07 19:57
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1728
普通迷宫增加转弯次数,不知道怎么限制转弯次数,只好按照转一个方向增加一次转弯一搜到底了。。
#include <iostream> //78ms#include <queue>#include <cstring>using namespace std;int n,m;const int INF = 1e5+666;const int AX = 300;char a[AX][AX];struct Node{int x;int y;int k; //记录转弯次数}pos,q;int vis[110][110];int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0},};int bfs(int start_x,int start_y,int end_x,int end_y,int sum){queue<Node>que;pos.k = -1; //第一次转弯不算所以从-1开始,这个处理是看的别人的 = =。pos.x = start_x;pos.y = start_y;vis[pos.x][pos.y] = 1;que.push(pos); while(!que.empty()) { pos=que.front(); if(pos.k>=sum)break; que.pop(); for(int i=0;i<4;i++) { q.x=pos.x+dir[i][0]; q.y=pos.y+dir[i][1]; q.k=pos.k+1; //从一个点以一个方向搜到不能走 while(a[q.x][q.y]=='.') { if(q.x==end_x&&q.y==end_y) //到终点就ok啦 { return 1; } if(vis[q.x][q.y]==0) //没走过又不标记就ME啦 { vis[q.x][q.y]=1; que.push(q); } q.x+=dir[i][0]; //一搜到底+++++(i是不变的,所以就是按原来的方向走,转弯不存在的) q.y+=dir[i][1]; } } } return 0;}int main(){int T;cin>>T;while(T--){memset(a,0,sizeof(a));memset(vis,0,sizeof(vis));cin>>n>>m;for(int i=0;i<n;i++){for(int j=0;j<m;j++){cin>>a[i][j];}}int s_x,s_y,e_x,e_y;int sun;cin>>sun>>s_y>>s_x>>e_y>>e_x; //输入是反的哦s_y--;s_x--;e_y--,e_x--; //从0开始-----if(bfs(s_x,s_y,e_x,e_y,sun)){cout<<"yes"<<endl;}else{cout<<"no"<<endl;}}return 0;}
阅读全文
0 0
- HDU 1728
- hdu 1728
- HDU 1728
- HDU 1728
- HDU 1728
- hdu 1728
- hdu 1728
- HDU 1728
- HDU 1728
- HDU 1728
- HDU 1728 逃离迷宫 + HDU 1072 Nightmare
- HDU 1728 逃离迷宫 + HDU 1072 Nightmare
- HDU 1728 逃离迷宫
- HDU 1728 逃离迷宫
- hdu 1728 逃离迷宫
- hdu 1728 逃离迷宫
- hdu 1728 逃离迷宫
- hdu 1728 逃离迷宫
- webview最全认识
- unordered_map和map
- SDL窗体嵌入到MFC/QT窗口控件上的方法总结
- 利用推广的方法证明NP-完全性
- 求一个数的二进制中1的个数(补码形式下)
- HDU 1728
- [Android6.0] RILC 系统结构及 LibRIL 运行机制
- extend 的js实现
- 机器学习之利用AdaBoost元算法提高分类性能
- 精通比特币
- Ural1017
- Quick Sort
- 欢迎使用CSDN-markdown编辑器
- java的反射