感觉写的很对很简洁,没看出来哪里写错了,求debug
查看原帖
感觉写的很对很简洁,没看出来哪里写错了,求debug
1283833
_Persever_ance楼主2024/2/29 22:59
#include<cstdio>
#include<iostream>

using namespace std;

int n, m, i, j, ans;
int cei[105][105];
int dx[4] = { -1,0,0,1 };
int dy[4] = { 0,1,-1,0 };

void dfs(int x, int y)
{
	if (x < 1 || x > m || y < 1 || y > n||cei[x][y]==0)
		return;
	cei[x][y] = 0;
	for (i = 0; i < 4; i++)
	{
		if (cei[x + dx[i]][y + dy[i]])
		{
			dfs(x + dx[i], y + dy[i]);
		}
	}
}
int main()
{
	cin >> n >> m;
	for(i=1;i<=n;i++)
		for (j = 1; j <= m; j++)
		{
			scanf("%1d", &cei[i][j]);
		}

	for(i=1;i<=n;i++)
		for (j = 1; j <= m; j++)
		{
			if (cei[i][j] != 0)
			{
				ans++;
				dfs(i, j);
			}
		}
	cout << ans;
	return 0;
}
2024/2/29 22:59
加载中...