dfs,40分,不知道为什么错
查看原帖
dfs,40分,不知道为什么错
1038838
张一2010楼主2023/12/17 23:43
#include<iostream>
using namespace std;
char z[110][110];int n,m,ans;
void dfs(int x,int y){
	if(z[x][y]=='.'){
        //cout<<"@@"<<"\n";
		return;
	}
	z[x][y]='.';
	for(int i=-1;i<=1;i++)
		for(int j=-1;j<=1;j++){
			int nextx=x+i,nexty=y+j;
			if((i!=0||j!=0)&&nextx>=0&&nextx<=n&&nexty>=0&&nexty<=m/*x!=0&&x!=n&&y!=0&&y!=m&&(i!=0||j!=0)*/){
				/*for(int k=0;k<n;k++){
					for(int l=0;l<m;l++){
						cout<<z[k][l];
					}cout<<"\n";
				}cout<<"L__>"<<i<<" "<<j<<"\n";*/
				dfs(nextx,nexty);
			}
		}
}
int main(){
	cin>>n>>m;
	for(int i=0;i<n;i++) for(int j=0;j<m;j++) cin>>z[i][j];
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			if(z[i][j]=='W'){
				//cout<<i<<" "<<j<<"\n";
				dfs(i,j);
				ans++;
			}
   		}
	}
	cout<<ans;
}
2023/12/17 23:43
加载中...