[ create a new paste ] login | about

Link: http://codepad.org/9PnOOvhu    [ raw code | output | fork ]

C, pasted on Oct 31:
#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;
}


Output:
1
2
5
3


Create a new paste based on this one


Comments: