迷宫
2015-09-01 19:38
381 查看
http://codevs.cn/problem/1215/
迷宫找出路,bfs上下左右的搜索,做好是否访问过的记录。
题解说dfs也可以,洗个澡回来弄dfs
迷宫找出路,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; }
相关文章推荐
- 白话经典算法系列之五 归并排序的实现
- 编译java程序时的一个问题
- MySql之索引
- poj 3013 Big Christmas Tree (dij+优先级队列优化 求最短)
- empty返回值为true的三种情况
- ios推送通知之本地推送
- Fragment onCreateView inflate注意事项
- Android Camera HAL浅析
- Git入门
- ubuntu安装redis
- 如何确定map以及reduce的个数
- Codeforces Round 313 找规律
- php中self和$this的用法
- 观察者KVO
- 贝塞尔曲线
- String对象
- [LintCode] Find the Weak Connected Component in the Directed Graph
- [Leetcode] Different Ways to Add Parentheses
- VIM配置笔记(cscope+NERDTree)
- Safari的常用快捷键