TOM挖金矿
题目描述
TOM得到了一张迷宫一样的古老地图,据说这是一张金矿图,他计划一个人悄悄得带上工具和袋子按照地图得提示去挖金矿。
出发前他必须规划好怎么样能找遍地图上的各个可能有金矿的地点。
地图如下:
3 5
000**
00*00
0*0*0
地图中0表示可以走,*表示是坚固的岩石壁,TOM计划按照顺时针的方式尝试4个方向:上->右->下->左来挖每个矿点是否有金矿,矿区入口在坐标(1,1)即第一行第一列
输入
第一行n,m两个正整数(2<=n,m<=2000)
接下来n行,每行m个字符(0或*)组成。
输出
按照TOM计划的顺序输出他所找的所有矿点的坐标。
样例输入
3 5
000**
00*00
0*0*0
样例输出
1 1
1 2
1 3
2 2
2 1
3 1
My code:
#include<bits/stdc++.h>
using namespace std;
bool a[1005][1005];
int n,m,dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};
char c;
void dfs(int x,int y){
cout<<x<<" "<<y<<endl;
for(int i=0;i<4;i++){
int xx=x+dx[i],yy=y+dy[i];
if(a[xx][yy]=1){
a[xx][yy]=0;
dfs(xx,yy);
}
}
return;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>c;
if(c=='0')
a[i][j]=1;
else
a[i][j]=0;
}
}
a[1][1]=0;
dfs(1,1);
}
样例运行结果:
