I usually don’t do homework for other people, but I liked the problem:
int c = -1;
while (c < 0)
{
a[x][y] = c--;
if (!hunt(0))
{
a[x][y] = 1;
c += 2;
hunt(c);
}
}
bool_t hunt(int v)
{
if (a[x-1][y] == v) { x--; return TRUE; }
if (a[x+1][y] == v) { x++; return TRUE; }
if (a[x][y-1] == v) { y--; return TRUE; }
if (a[x][y+1] == v) { y++; return TRUE; }
return FALSE;
}
, . , , , , int s, 0 1 .