import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNextInt()) { int n = in.nextInt(); int m = in.nextInt(); int[][] arr = new int[n][m]; int P = in.nextInt(); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { arr[i][j] = in.nextInt(); } } List<int[]> list = new ArrayList<>(); boolean zou = zou(arr, 0, 0, P, list); StringBuffer str = new StringBuffer(); if (zou) { for (int i = 0; i < list.size() - 1; i++) { int[] a = list.get(i); str.append("[" + a[0] + "," + a[1] + "],"); } int[] b = list.get(list.size() - 1); str.append("[" + b[0] + "," + b[1] + "]"); } else { str.append("Can not escape!"); } System.out.println(str); } } private static boolean zou(int[][] arr, int i, int j, int P, List<int[]> list) { list.add(new int[]{i, j}); //走在这,将这赋值为0,代表走过 arr[i][j] = 0; //结束 if (i == 0 && j == arr[0].length - 1) { return true; } //向上走 体力-3 if (i > 0 && arr[i - 1][j] != 0 && P - 3 >= 0) { if (zou(arr, i - 1, j, P - 3, list)) { return true; } } //向右走 体力-1 if (j < arr[0].length - 1 && arr[i][j + 1] != 0 && P - 1 >= 0) { if (zou(arr, i, j + 1, P - 1, list)) { return true; } } //向下走 体力不变 if (i < arr.length - 1 && arr[i + 1][j] != 0) { if (zou(arr, i + 1, j, P, list)) { return true; } } //向左走 体力-1 if (j > 0 && arr[i][j - 1] != 0 && P - 1 >= 0) { if (zou(arr, i, j - 1, P - 1, list)) { return true; } } //都没路了 降list删除,返回false //走在这,将这赋值为1,代表不走了 arr[i][j] = 1; list.remove(list.size() - 1); return false; } }