1335闯迷宫
2016-03-12 17:16
330 查看
/*
此题出自http://ac.jobdu.com/problem.php?pid=1335
用宽度优先搜索进行遍历
*/
#include <cstdio>
#include <iostream>
#include <cstring>
#include <queue>
using namespace std;
int mat[100][100];
int n;
int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
class Point {
public: int x,y,len;
Point(int x_,int y_,int len_){x=x_;y=y_;len=len_;}
};
int bfs(queue<Point> q)
{
int x,y;
Point f(0,0,0);
q.push(f);
while(q.size()>0)
{
f=q.front();
q.pop();
for(int i=0;i<4;i++)
{
x=f.x+dir[i][0];
y=f.y+dir[i][1];
if(x==n-1 && y==n-1)return f.len+1;
if(x<=n-1 && y<=n-1 && !mat[x][y] && x>=0 && y>=0)
{
mat[x][y]=1;
q.push(Point(x,y,f.len+1));
}
}
}
return -1;
}
int main()
{
while(cin>>n)
{
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
cin>>mat[i][j];
}
if(mat[0][0]==1)
{
cout<<"-1"<<endl;
continue;
}
if(n==1)
{
cout<<"0"<<endl;
continue;
}
queue<Point> q;
cout<<bfs(q)<<endl;
}
return 0;
}
此题出自http://ac.jobdu.com/problem.php?pid=1335
用宽度优先搜索进行遍历
*/
#include <cstdio>
#include <iostream>
#include <cstring>
#include <queue>
using namespace std;
int mat[100][100];
int n;
int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
class Point {
public: int x,y,len;
Point(int x_,int y_,int len_){x=x_;y=y_;len=len_;}
};
int bfs(queue<Point> q)
{
int x,y;
Point f(0,0,0);
q.push(f);
while(q.size()>0)
{
f=q.front();
q.pop();
for(int i=0;i<4;i++)
{
x=f.x+dir[i][0];
y=f.y+dir[i][1];
if(x==n-1 && y==n-1)return f.len+1;
if(x<=n-1 && y<=n-1 && !mat[x][y] && x>=0 && y>=0)
{
mat[x][y]=1;
q.push(Point(x,y,f.len+1));
}
}
}
return -1;
}
int main()
{
while(cin>>n)
{
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
cin>>mat[i][j];
}
if(mat[0][0]==1)
{
cout<<"-1"<<endl;
continue;
}
if(n==1)
{
cout<<"0"<<endl;
continue;
}
queue<Point> q;
cout<<bfs(q)<<endl;
}
return 0;
}
相关文章推荐
- [DIV/CSS] CSS3的content属性详解
- react-js demo 地址
- linux下的grep,egrep及正则表达式
- C# 水仙花数
- JavaScript对表单验证的例子
- 15.在Ubuntu 14.04上搭建vsftpd
- 实验0:了解和熟悉操作系统
- Android Studio报错--Error: Library projects cannot set applicationId. applicationI
- ActiveMQ搭建与测试
- LCS加强版+输出路径(1503)
- android 外部启动activity,自定义action,action常量大全
- JS与OC交互(iPhone项目)中JavaScriptCore.framework的使用
- VS2013使用单元测试
- CuratorFramework入门指南
- ACM学习历程—Hihocoder [Offer收割]编程练习赛1
- 类的学习
- C# SerializableDictionary序列化/反序列化
- WindowsXP系统下Print Spooler服务不见了的解决方法
- 【Java】容器类学习之路(二)Collection详解:List、Set和Queue
- 【转】unity3d所要知道的基础知识体系大纲