#include <stdio.h>
int chain_rec(int array[8][8], int x, int y, int var)
{
int sum = 1;
if (array[x][y] != var) return 0;
array[x][y] = -1;
if (x + 1 <= 7) sum += chain_rec(array, x + 1, y, var);
if (y + 1 <= 7) sum += chain_rec(array, x, y + 1, var);
if (0 <= x - 1) sum += chain_rec(array, x - 1, y, var);
if (0 <= y - 1) sum += chain_rec(array, x, y - 1, var);
return sum;
}
int chain(int array[8][8], int x, int y)
{
int sum = 1;
int var = array[x][y];
array[x][y] = -1;
if (x + 1 <= 7) sum += chain_rec(array, x + 1, y, var);
if (y + 1 <= 7) sum += chain_rec(array, x, y + 1, var);
if (0 <= x - 1) sum += chain_rec(array, x - 1, y, var);
if (0 <= y - 1) sum += chain_rec(array, x, y - 1, var);
return sum;
}
int main()
{
int array[8][8] =
{{0, 2, 1, 3, 0, 1, 1, 2},
{2, 2, 2, 1, 1, 2, 3, 3},
{3, 0, 2, 1, 2, 3, 2, 2},
{1, 1, 1, 2, 1, 0, 0, 1},
{2, 3, 3, 2, 1, 0, 1, 0},
{2, 1, 1, 2, 2, 3, 0, 1},
{1, 1, 2, 1, 2, 0, 3, 1},
{1, 3, 3, 3, 0, 0, 1, 1},};
printf("%d\n", chain(array, 7, 0));
printf("%d\n", chain(array, 7, 1));
return 0;
}