#include<stdio.h>
#include<string.h>
#define maxn 110
int n, m, c;
int sum;
char map[maxn][maxn];
int vis[maxn][maxn];
void dfs2(int x, int y, char flag) {
if(vis[x][y] || x < 0 || y < 0 || x >= n || y >= m || map[x][y] != flag)
return;
else {
vis[x][y] = 1;
dfs2(x, y + 1, flag);
dfs2(x, y - 1, flag);
dfs2(x + 1, y, flag);
dfs2(x - 1, y, flag);
}
}
void dfs(int x, int y) {
if(vis[x][y] || x >= n || x < 0 || y >= m || y < 0 || map[x][y] == '.')
return;
if(map[x][y] == c)
return;
else {
vis[x][y] = 1;
sum++;
dfs2(x, y + 1, map[x][y]);
dfs2(x, y - 1, map[x][y]);
dfs2(x + 1, y, map[x][y]);
dfs2(x - 1, y, map[x][y]);
}
}
int main() {
while(scanf("%d %d %c", &n, &m, &c) != EOF) {
sum = 0;
memset(vis, 0, sizeof(vis));
for(int i = 0;i < n; i++) {
getchar();
for(int j = 0;j < m; j++)
scanf("%c", &map[i][j]);
}
for(int i = 0;i < n; i++)
for(int j = 0;j < m; j++)
if(map[i][j] == c) {
dfs(i+1, j);
dfs(i-1, j);
dfs(i, j+1);
dfs(i, j-1);
}
printf("%d\n", sum);
}
return 0;
}
哈理工OJ 2147 经理办公室(深搜题目)
最新推荐文章于 2021-05-24 04:21:54 发布