题解
2024-01-26 12:01:58
发布于:吉林
110阅读
0回复
0点赞
#include<bits/stdc++.h>;
using namespace std;
int a,b,v[105][105],s[123],n[4][2]={{1,0},{-1,0},{0,1},{0,-1}}; 
char maps[105][105],c;
void dfs(int x,int y){
	for(int i=0;i<4;i++){
		int xx=x+n[i][0];
		int yy=y+n[i][1];
		if(xx>a||yy>b||xx<1||yy<1)continue;
		if(v[xx][yy])continue;
		if(maps[xx][yy]=='.')continue;
		if(maps[xx][yy]!=c){
            s[int(maps[xx][yy])]=1;
            continue;
        }
		v[xx][yy]=1;
		dfs(xx,yy);
	}
}
int main(){
	cin>>a>>b>>c;
	for(int i=1;i<=a;i++){
		for(int j=1;j<=b;j++){
			cin>>maps[i][j]; 
		}
	} 
    for(int i=1;i<=a;i++){
		for(int j=1;j<=b;j++){
			if(!maps[i][j])maps[i][j]='.';
		}
	}
	for(int i=1;i<=a;i++){
		for(int j=1;j<=b;j++){
			if(maps[i][j]==c){
				v[i][j]=1;
				dfs(i,j);
			}
		}
	}
	int t=0;
    s[int(c)]=0;
	for(int i=64;i<=91;i++){
		if(s[i]){
            t++;
        }
	}
	cout<<t;
    return 0;
}
这里空空如也



有帮助,赞一个