View Code of Problem 3499

#include <algorithm>
#include <cmath>
#include <cstring>
#include <iostream>
#include <string>
using namespace std;

int arr[5][5] = {0};
int xx[4] = {0, 0, -1, 1};
int yy[4] = {1, -1, 0, 0};
int ans[9][2];
int ansIndex;
int visited[5][5];
int flag = 1;
void dfs(int x, int y)
{
    if (flag)
    {
        if (x == 4 && y == 4)
        {
            for (int i = 0; i < 9; i++)
            {
                printf("(%d, %d)\n", ans[i][0], ans[i][1]);
            }
            flag = 0;
        }
        for (int i = 0; i < 4; i++)
        {
            int X = x + xx[i];
            int Y = y + yy[i];
            if (X >= 0 && X < 5 && Y >= 0 && Y < 5 && visited[X][Y] != 1 && arr[X][Y] == 0 && flag)
            {
                visited[X][Y] = 1;
                ans[ansIndex][0] = X;
                ans[ansIndex][1] = Y;
                ansIndex++;
                dfs(X, Y);
                visited[X][Y] = 0;
                ansIndex--;
            }
        }
    }
}

int main()
{
    for (int i = 0; i < 5; i++)
    {
        for (int j = 0; j < 5; j++)
        {
            cin >> arr[i][j];
        }
    }
    memset(ans, 0, sizeof(ans));
    memset(visited, 0, sizeof(visited));
    ansIndex = 1;

    dfs(0, 0);
}

Double click to view unformatted code.


Back to problem 3499