不理解
查看原帖
不理解
861457
yuntianming12楼主2024/7/11 12:08
#include<bits/stdc++.h>
using namespace std;
char a[101][101];
int ans;
int n,m;
int dx[4]={1,-1,0,0};
int dy[4]={0,0,1,-1};
void dfs(int x,int y){
	a[x][y]='0';
	for(int i=0;i<4;i++){
	    int ux=x+dx[i],uy=y+dy[i];
		if(ux>=1&&ux<=n&&uy>=0&&uy<m&&a[ux][uy]!='0'){
			dfs(ux,uy);
		}
	}
	return;
} 
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	for(int i=1;i<=n;i++){
		for(int j=0;j<m;j++){
			//cout<<i<<' '<<j<<endl;//调试用
			if(a[i][j]!='0'){
				//cout<<"*"<<i<<' '<<j<<' '<<a[i][j];//调试用
				dfs(i,j);
				ans++;
			}
		}
	}
	cout<<ans;
	return 0;
}

以上ac了,但以下的为什么30分
#include<bits/stdc++.h>
using namespace std;
char a[101][101];
int ans;
int n,m;
int dx[4]={1,-1,0,0};
int dy[4]={0,0,1,-1};
void dfs(int x,int y){
	a[x][y]='0';
	int dx,dy;
	for(int i=-1;i<=1;i++){
		for(int j=-1;j<=1;j++){
			dx=x+i;
			dy=y+j;
			if(dx>=1&&dx<=n&&dy>=0&&dy<m&&a[dx][dy]!='0'){
				dfs(dx,dy);
			}
		}
	}
	return;
} 
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	for(int i=1;i<=n;i++){
		for(int j=0;j<m;j++){
			//cout<<i<<' '<<j<<endl;//调试用
			if(a[i][j]!='0'){
				//cout<<"*"<<i<<' '<<j<<' '<<a[i][j];//调试用
				dfs(i,j);
				ans++;
			}
		}
	}
	cout<<ans;
	return 0;
}
2024/7/11 12:08
加载中...