12分是什么问题??
查看原帖
12分是什么问题??
470966
Ding_wd_Peter146_楼主2024/8/10 11:36
# include <bits/stdc++.h>
using namespace std;

const int MAXN = 7e2 + 7;
int a[MAXN][MAXN];
int vis[MAXN][MAXN];

int dix[10] = {0, 0, 1, 1, 1, -1, -1, -1};
int diy[10] = {1, -1, 0, 1, -1, 0, 1, -1}; 

int n, m;
int cnt = 0;

void dfs(int x, int y)
{
	vis[x][y] = true;
	for (int i = 0; i < 8; i++)
	{
		int nx = x + dix[i];
		int ny = y + diy[i];
		if (nx >= 1 && nx <= n && ny >= 1 && ny <= m && vis[nx][ny] == false)
		{
			if (a[nx][ny] <= a[x][y])
			{
				vis[nx][ny] = true;
				dfs(nx, ny);
			}
		}
	}
}

int main()
{
	cin >> n >> m;
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= m; j++)
			cin >> a[i][j];
	}
	memset(vis, 0, sizeof(vis));
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= m; j++)
		{
			if (vis[i][j] == false)
			{
				dfs(i, j);
				cnt ++;
			}
		}
	}
	cout << cnt;
	return 0;
}

2024/8/10 11:36
加载中...