using
System;
using
System.Collections.Generic;
namespace
Algorithm
{
class
MainClass
{
static
readonly
int
MAX = 5;
static
void
getallpath(
int
[,] matrix,
int
n,
int
row,
int
col, List<
string
> ans,
string
cur)
{
if
(row >= n || col >= n || row < 0 || col < 0
|| matrix[row, col] == 0)
{
return
;
}
if
(row == n - 1 && col == n - 1)
{
ans.Add(cur);
return
;
}
matrix[row, col] = 0;
getallpath(matrix, n, row - 1, col, ans, cur +
"U"
);
getallpath(matrix, n, row, col + 1, ans, cur +
"R"
);
getallpath(matrix, n, row, col - 1, ans, cur +
"L"
);
getallpath(matrix, n, row + 1, col, ans, cur +
"D"
);
matrix[row, col] = 1;
return
;
}
static
List<
string
> findPath(
int
[,] matrix,
int
n)
{
List<
string
> ans =
new
List<
string
>();
getallpath(matrix, n, 0, 0, ans,
""
);
return
ans;
}
public
static
void
Main(
string
[] args)
{
int
[,] m = { { 1, 0, 0, 0, 0 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 0, 1 },
{ 0, 0, 0, 0, 1 },
{ 0, 0, 0, 0, 1 } };
int
n = m.GetLength(0);
List<
string
> ans = findPath(m, n);
foreach
(
string
i
in
ans)
{
Console.Write(i +
" "
);
}
}
}
}