View Code of Problem 3499

#include <stdio.h>
int main()
{
	char a[6][6];
	int dir[100][2], top, i, j, x, y;
	int up[2] = { -1,0 }, down[2] = { 1,0 }, left[2] = { 0,-1 }, right[2] = { 0,1 };
	top = 0;
	for (i = 0; i < 5; i++)
	{
		for (j = 0; j < 5; j++)
		{
			scanf("%c", &a[i][j]);
			getchar();
		}
	}
	dir[top][0] = 0;
	dir[top][1] = 0;
	for (;;)
	{
		if (dir[top][0] == 4 && dir[top][1] == 4)
			break;
		if (a[dir[top][0] + down[0]][dir[top][1]] == '0')
		{
			x = dir[top][0];
			y = dir[top][1];
			dir[++top][0] = x + down[0];
			dir[top][1] = y;
			a[x][y] = '1';
		}
		else if (a[dir[top][0]][dir[top][1] + right[1]] == '0')
		{
			x = dir[top][0];
			y = dir[top][1];
			dir[++top][0] = x ;
			dir[top][1] = y + right[1];
			a[x][y] = '1';
		}
		else if (a[dir[top][0]][dir[top][1] + left[1]] == '0')
		{
			x = dir[top][0];
			y = dir[top][1];
			dir[++top][0] = x;
			dir[top][1] = y + left[1];
			a[x][y] = '1';
		}
		else if (a[dir[top][0] + up[0]][dir[top][1]] == '0')
		{
			x = dir[top][0];
			y = dir[top][1];
			dir[++top][0] = x + up[0];
			dir[top][1] = y;
			a[x][y] = '1';
		}
		else
		{
			a[dir[top][0]][dir[top][1]] = '1';
			top--;
		}
	}
	for (i = 0; i <= top; i++)
	{
		printf("(%d, %d)\n", dir[i][0], dir[i][1]);
	}
	return 0;
}

Double click to view unformatted code.


Back to problem 3499