我又来求调代码了 躲避追捕WA40分

#include<bits/stdc++.h>
using namespace std;
int n,m,d[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
char a[510][510];
int ans;
void dfs(int x,int y){
	a[x][y]='#';
	for(int i=0;i<n;i++){
		int sx=x+d[i][0];
		int sy=y+d[i][1];
		if(sx >= 0 && sy >= 0 && sx < n && sy < m && a[sx][sy] == '0') dfs(sx,sy);
	}
}
int main(){
	cin>>n>>m;
	for(int i=0;i<n;i++) for(int j=0;j<m;j++) cin>>a[i][j];
	for(int i=0;i<n;i++) if(a[i][0]=='0') dfs(i,0);
  	for(int i=0;i<n;i++) if(a[i][m-1]=='0') dfs(i,m-1);
	for(int i=0;i<m;i++) if(a[0][i]=='0') dfs(0,i);
	for(int i=0;i<m;i++) if(a[n-1][i]=='0') dfs(n-1,i);
	ans=0;
	for(int i=0;i<n;i++)
		for(int j=0;j<m;j++)
			if(a[i][j]=='0') ans++;
	cout<<ans;
	return 0;
}

这种迷宫类的问题建议用bfs做

e…我喜欢DFS

:grimacing: :grimacing:

@徐千城俊 我建议这道题目搜索,直套for循环就好了

你不会把残垣断壁外的空地也算作能躲避的地方了吧?

你这边应该是for(int i=0;i<4;i++)吧

样例都对啊

我嘞个。。谢谢

@稻叶昙 关贴

这么简单被抢了!!!

@稻叶昙