为什么相同的结果在这里是错的
查看原帖
为什么相同的结果在这里是错的
1055621
cjr1221楼主2024/1/7 14:55
#include<stdio.h>
#include<math.h>
#define maxn 101
char board[maxn][maxn];
int n, m;
void dfs(int x, int y)
{
	if (board[y][x] == '-'||x<1||x>m||y<1||y>n)
		return;
	board[y][x] = '-';
	dfs(x + 2, y);
	dfs(x + 1, y + 1);
	dfs(x + 1, y);
	dfs(x + 1, y - 1);
	dfs(x , y + 1);
	dfs(x , y + 2);
	dfs(x , y - 1);
	dfs(x , y - 2);
	dfs(x - 1, y + 1);
	dfs(x - 1, y );
	dfs(x - 1, y - 1);
	dfs(x - 2, y );

}
int main()
{
	scanf("%d%d", &n, &m);
	getchar();
	for (int i = 1; i <= n; i++)
	{
		for (int t = 1; t <= m; t++)
			scanf("%c", &board[i][t]);
		getchar();
	}
	int sum = 0;
	for (int i = 1; i <= n; i++)
		for (int t = 1; t <= m; t++)
			if (board[i][t] == '#')
			{
				sum++;
				dfs(t, i);
			}
	printf("%d", sum);
	return 0;
}
2024/1/7 14:55
加载中...