样例过了但只有10分,求助!!
查看原帖
样例过了但只有10分,求助!!
556110
_Timeless_楼主2022/7/20 14:31
#include <iostream>

using namespace std;

int a[110][110], m, n;
int dx[] = {0, 0, 1, -1};
int dy[] = {-1, 1, 0, 0};

void dfs(int x, int y)
{
	a[x][y] = 0;
	for(int i = 0; i < 4; i++)
	{
		int tx = x + dx[i];
		int ty = y + dy[i];
		if(tx > 0 && tx <= m && ty > 0 && ty <= n && a[tx][ty])
		{
			dfs(tx, ty);
		}
	}
}

int main()
{
	int cnt = 0;
	cin >> m >> n;
	for(int i = 1; i <= m; i++)
	{
		for(int j = 1; j <= n; j++)
		{
			scanf("%1d", &a[i][j]);
		}
	}
	for(int i = 1; i <= m; i++)
	{
		for(int j = 1; j <= n; j++)
		{
			if(a[i][j])
			{
				dfs(i, j);
				cnt++;
			}
		}
	}
	cout << cnt;
	
	return 0;
}
2022/7/20 14:31
加载中...