def esValido(n, m, i, j, lab):
return 0 <= i < m and 0 <= j < n and lab[i][j] == 0
def recorroLab(lab):
m, n = len(lab), len(lab[0])
movs = []
recorrido(lab, m, n, 0, 0, movs, "")
return min(movs)
def recorrido(lab, m, n, i, j, movs, actual):
if not esValido(n, m, i, j, lab):
return
if i == m - 1 and j == n - 1:
movs.append(actual)
return
lab[i][j] = 1
recorrido(lab, m, n, i + 1, j, movs, actual + "D")
recorrido(lab, m, n, i - 1, j, movs, actual + "U")
recorrido(lab, m, n, i, j - 1, movs, actual + "L")
recorrido(lab, m, n, i, j + 1, movs, actual + "R")
lab[i][j] = 0
laberinto = [
[0, 0, 1, 0, 0],
[1, 0, 1, 0, 1],
[1, 0, 0, 0, 1],
[1, 0, 0, 0, 0],
[0, 1, 0, 1, 0]
]
print(recorroLab(laberinto))
ZGVmIGVzVmFsaWRvKG4sIG0sIGksIGosIGxhYik6CiAgICByZXR1cm4gMCA8PSBpIDwgbSBhbmQgMCA8PSBqIDwgbiBhbmQgbGFiW2ldW2pdID09IDAKCmRlZiByZWNvcnJvTGFiKGxhYik6CiAgICBtLCBuID0gbGVuKGxhYiksIGxlbihsYWJbMF0pCiAgICBtb3ZzID0gW10KICAgIHJlY29ycmlkbyhsYWIsIG0sIG4sIDAsIDAsIG1vdnMsICIiKQogICAgcmV0dXJuIG1pbihtb3ZzKQoKZGVmIHJlY29ycmlkbyhsYWIsIG0sIG4sIGksIGosIG1vdnMsIGFjdHVhbCk6CiAgICBpZiBub3QgZXNWYWxpZG8obiwgbSwgaSwgaiwgbGFiKToKICAgICAgICByZXR1cm4KICAgIGlmIGkgPT0gbSAtIDEgYW5kIGogPT0gbiAtIDE6CiAgICAgICAgbW92cy5hcHBlbmQoYWN0dWFsKQogICAgICAgIHJldHVybgogICAgbGFiW2ldW2pdID0gMQogICAgcmVjb3JyaWRvKGxhYiwgbSwgbiwgaSArIDEsIGosIG1vdnMsIGFjdHVhbCArICJEIikKICAgIHJlY29ycmlkbyhsYWIsIG0sIG4sIGkgLSAxLCBqLCBtb3ZzLCBhY3R1YWwgKyAiVSIpCiAgICByZWNvcnJpZG8obGFiLCBtLCBuLCBpLCBqIC0gMSwgbW92cywgYWN0dWFsICsgIkwiKQogICAgcmVjb3JyaWRvKGxhYiwgbSwgbiwgaSwgaiArIDEsIG1vdnMsIGFjdHVhbCArICJSIikKICAgIGxhYltpXVtqXSA9IDAKCmxhYmVyaW50byA9IFsKICAgIFswLCAwLCAxLCAwLCAwXSwKICAgIFsxLCAwLCAxLCAwLCAxXSwKICAgIFsxLCAwLCAwLCAwLCAxXSwKICAgIFsxLCAwLCAwLCAwLCAwXSwKICAgIFswLCAxLCAwLCAxLCAwXQpdCgpwcmludChyZWNvcnJvTGFiKGxhYmVyaW50bykpCgo=