View Code of Problem 62

#include<stdio.h>
#include<stdlib.h>

int dx[8] = { -1, -1, 0, 1, 1, 1, 0, -1 };
int dy[8] = { 0, -1, -1, -1, 0, 1, 1, 1 };
void count_sheep(char grid[120][120], int i, int j, int m, int n)
{
	if (grid[i][j] == '1')
		grid[i][j] = '0';
	for (int k = 0; k < 8; ++k)
	{
		int x = j + dx[k], y = i + dy[k];
		if (x >= 0 && x < n && y >= 0 && y <= m && grid[y][x] == '1')
			count_sheep(grid, y, x, m, n);

	}
}
int main()
{
	int m = 0, n = 0;
	scanf("%d %d", &m, &n);
	char grid[120][120] = { '0' };
	while (m != 0 && n != 0)
	{
		for (int i = 0; i < m; ++i)
			for (int j = 0; j < n; ++j)
			{
				char temp = ' ';
				scanf("%c", &temp);
				if (temp == '\n')
					scanf("%c", &temp);
				grid[i][j] = temp;
			}

		int count = 0;
		for (int i = 0; i < m; ++i)
			for (int j = 0; j < n; ++j)
			{
				if (grid[i][j] == '1')
				{
					count_sheep(grid, i, j, m, n);
					++count;
				}
			}

		printf("%d\n", count);
		scanf("%d %d", &m, &n);
	}
}

Double click to view unformatted code.


Back to problem 62