迷宫
来源:互联网 发布:java技术总监面试题 编辑:程序博客网 时间:2024/05/16 19:56
http://codevs.cn/problem/1215/
迷宫找出路,bfs上下左右的搜索,做好是否访问过的记录。
题解说dfs也可以,洗个澡回来弄dfs
#include<iostream>#include<stdio.h>#include<cmath>#include<string.h>//#include<map>#include<queue>#include<algorithm>using namespace std;struct mystruct{ int x,y;};int main(){ int n; int map[105][105]={0}; int pyx[]={-1,1,0,0}; int pyy[]={0,0,-1,1}; cin>>n; for (int i = 0; i < n; ++i) { /* code */ int len; cin>>len; string temp; for (int j = 0; j < len; ++j) { /* code */ cin>>temp; for (int k = 0; k < len; ++k) { /* code */ if (temp[k]=='#') { /* code */ map[j][k]=0; }else { map[j][k]=1; } } } bool flag=false; mystruct tempstruct; queue<mystruct>que; tempstruct.x=0; tempstruct.y=0; que.push(tempstruct); while(!que.empty()) { tempstruct=que.front(); que.pop(); if (tempstruct.x==len-1&&tempstruct.y==len-1) { /* code */ flag=true; break; }else { for (int j = 0; j < 4; ++j) { /* code */ int x=tempstruct.x+pyx[j]; int y=tempstruct.y+pyy[j]; if (x>=0&&y>=0&&x<len&&y<len&&map[x][y]) { /* code */ map[x][y]=0; mystruct tempstructtemp; tempstructtemp.x=x; tempstructtemp.y=y; que.push(tempstructtemp); } } } } if (flag) { /* code */ cout<<"YES"<<endl; }else { cout<<"NO"<<endl; } } return 0;}
0 0