不懂就问,为什么转成数字就过了
查看原帖
不懂就问,为什么转成数字就过了
422996
HeCao2008楼主2022/6/5 01:39
#include<bits/stdc++.h>
using namespace std;
int a[1001][1001];
char c;
int dx[]={0,1,0,-1};
int dy[]={1,0,-1,0};
int x,y;
void dfs(int aa,int bb){
	if(aa<0||aa>x+1||bb<0||bb>y+1||a[aa][bb])return;
	a[aa][bb]=2;
	for(int i=0;i<4;i++)dfs(aa+dx[i],bb+dy[i]);
}
int main(){
	cin>>x>>y;
	for(int i=1;i<=x;i++)for(int j=1;j<=y;j++){
		cin>>c;
		if(c=='0')a[i][j]=0;
		else a[i][j]=1;
	}
	dfs(0,0);
	int ans=0;
	for(int i=1;i<=x;i++)for(int j=1;j<=y;j++){
		if(!a[i][j])ans++;
	}
	cout<<ans<<endl;
	return 0;
} //这是过的
#include<bits/stdc++.h>
using namespace std;
char a[1001][1001];
int dx[]={0,1,0,-1};
int dy[]={1,0,-1,0};
int x,y;
void dfs(int aa,int bb){
	if(aa<0||aa>x+1||bb<0||bb>y+1||a[aa][bb]!=0)return;
	a[aa][bb]='g';
	for(int i=0;i<4;i++)dfs(aa+dx[i],bb+dy[i]);
}
int main(){
	cin>>x>>y;
	for(int i=1;i<=x;i++)for(int j=1;j<=y;j++)cin>>a[i][j];
	dfs(0,0);
	int ans=0;
	for(int i=1;i<=x;i++)for(int j=1;j<=y;j++){
		if(a[i][j]=='0')ans++;
	}
	cout<<ans<<endl;
	return 0;
} //这是没过的
2022/6/5 01:39
加载中...