站外题求助,玄关
  • 板块灌水区
  • 楼主封禁用户
  • 当前回复5
  • 已保存回复6
  • 发布时间2024/10/17 19:51
  • 上次更新2024/10/17 21:39:22
查看原帖
站外题求助,玄关
1053866
封禁用户楼主2024/10/17 19:51
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);
}

样例运行结果:

2024/10/17 19:51
加载中...