社区讨论

求助,萌新过不了,20分

P1596[USACO10OCT] Lake Counting S参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@lo1aj5d9
此快照首次捕获于
2023/10/22 17:52
2 年前
此快照最后确认于
2023/11/02 18:11
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
char a[110][110];
int n , m;
void dfs(int x , int y)
{
	if (a[x][y] == '.')
	{
		return;
	}
	if (x < 0 || y < 0 || x > (n - 1) || y > (m - 1))
	{
		return;
	}
	a[x][y] = '.';
	if (a[x + 1][y + 1] != '.')
	{
		dfs(x + 1 , y + 1);
	}
	if (a[x + 1][y - 1] != '.')
	{
		dfs(x + 1 , y - 1);
	}
	if (a[x - 1][y - 1] != '.')
	{
		dfs(x - 1 , y - 1);
	}
	if (a[x - 1][y + 1] != '.')
	{
		dfs(x - 1 , y + 1);
	}
	if (a[x][y - 1] != '.')
	{
		dfs(x , y - 1);
	}
	if (a[x][y + 1] != '.')
	{
		dfs(x , y + 1);
	}
	if (a[x + 1][y] != '.')
	{
		dfs(x + 1 , y);
	}
	if (a[x - 1][y] != '.')
	{
		dfs(x - 1 , y);
	}
	return;
}
int main(void)
{
	int n , m;
	scanf("%d%d" , &n , &m);      
	for (int i = 0 ; i < n ; i++)
	{
		scanf("%s" , a[i]); 
	}
	int ans = 0;
	for (int i = 0 ; i < n ; i++)
	{
		for (int j = 0 ; j < m ; j++)
		{
			if (a[i][j] == 'W')
			{
				ans++;
			}
			dfs(i , j);
		}
	}
	printf("%d" , ans);
}

回复

2 条回复,欢迎继续交流。

正在加载回复...