打了一个深搜,不知哪里错了,求助!
查看原帖
打了一个深搜,不知哪里错了,求助!
783810
furina_yyds楼主2023/7/28 20:45
#include <bits/stdc++.h>
using namespace std;
int n, m;
char a[105][105];
bool b[105][105];
int dx[8] = {1, 1, 1, 0, 0, -1, -1, -1};
int dy[8] = {1, 0, -1, 1, -1, 1, 0, 1};
int ans = 0;
bool in(int x, int y)
{
	return x <= n && x >= 1 && y <= m && y >= 1;
}
void dfs(int x, int y)
{
	b[x][y] = true;
	for(int i = 0;i < 8;i++){
		int nx = x + dx[i];
		int ny = y + dy[i];
		if(in(nx, ny) && b[nx][ny] == false && a[nx][ny] == 'W')dfs(nx, ny);
	}
}
int main()
{
	scanf("%d%d", &n, &m);
	for(int i = 1;i <= n;i++){
		for(int j = 1;j <= m;j++){
			scanf("%c", &a[i][j]);
		}
	}
	for(int i = 1;i <= n;i++){
		for(int j = 1;j <= m;j++){
			if(a[i][j] == 'W' && !b[i][j])
			{
				ans++;
				dfs(i, j);
			}
		}
	}
	printf("%d", ans);
	return 0;
}
2023/7/28 20:45
加载中...