1003. Maze
来源:互联网 发布:如何描述一个java项目 编辑:程序博客网 时间:2024/06/06 14:03
简单而基本的bfs问题,是求解这类问题的基本问题。许多bfs问题都是在这个问题上面衍生而来的。
#include<iostream>#include<queue>using namespace std;int const maxn = 40;int a[maxn][maxn];int isvis[maxn][maxn];int dr[] = {-1,0,1,0};int dc[] = {0,1,0,-1};int n;struct P { int c; int r; int val;}p;bool isin(int r, int c) { return (r>=0&&r<n&&c>=0&&c<n);}int main() { while (cin>>n&&n) { for (int i=0;i<n;i++) for (int j=0;j<n;j++) { cin>>a[i][j]; isvis[i][j] = 0; } isvis[0][0] = 1; P temp,aim; temp.c=0; temp.r=0; temp.val=1; aim.c=n-1;aim.r=n-1; queue<P> Q; Q.push(temp); int flag = 0; while (!Q.empty()) { temp = Q.front(); Q.pop(); for (int i=0;i<4;i++) { int nc = temp.c+dc[i]; int nr = temp.r+dr[i]; if (isin(nc,nr)&&a[nr][nc]==0&&!isvis[nr][nc]) { int nv = temp.val+1; P k; k.c =nc; k.r=nr; k.val = nv; isvis[nr][nc] = 1; if (nc==n-1&&nr==n-1) { cout<<nv<<endl; flag = 1; break; } Q.push(k); } if (flag==1) break; } } if (flag==0) cout<<0<<endl; }}
改进思想将bfs过程单独写一个函数也行在逻辑上会显得更为简便。
注意,结构体中的val必须初始化!
0 0
- 1003. Maze
- Maze
- maze
- Maze
- maze
- Maze
- maze
- Maze
- Maze
- Maze
- 2016/10/20 1003. Maze
- Maze Traversa
- hdu4035.Maze
- POJ1111(Maze)
- Borg Maze
- HDU4035 Maze
- 【HZOI】Maze
- Double Maze
- SQLite简单运用
- 计算机的内存
- Android之获取图片缩略图
- keepalived 高可用集群
- 【JZOJ1611】Dining
- 1003. Maze
- pymongo 安装
- 猜生日
- 【openjudge 9275】[2.6基本算法之动态规划][Usaco2009 Feb]Bullcow(dp)
- 记录一下python的数据结构 - array
- ACM图论算法—邮递员投递问题
- Android studio文件结构
- 文章概要
- 关于Android 6.0二维码生成和识别的简单理解和常见问题