import java.util.Scanner; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; class Node1{ int x; int y; public Node1(int x,int y){ this.x=x; this.y=y; } } // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) throws IOException { BufferedReader reader=new BufferedReader(new InputStreamReader(System.in)); String str; while ((str=reader.readLine())!=null){ String[] arr=str.split(" "); int row=Integer.parseInt(arr[0]); int col=Integer.parseInt(arr[1]); int[][] mat=new int[row][col]; for (int i = 0; i < row; i++) { str=reader.readLine(); arr=str.split(" "); for (int j = 0; j < col; j++) { mat[i][j]=Integer.parseInt(arr[j]); } } ArrayList<Node1> path=new ArrayList<>(); ArrayList<Node1> minpath=new ArrayList<>(); int[][] book=new int[row][col]; getMinPath(mat,row,col,0,0,book,path,minpath); for (Node1 n:minpath) { System.out.println("("+n.x+","+n.y+")"); } } } public static void getMinPath(int[][] mat,int row,int col,int x,int y,int[][] book,ArrayList<Node1> path,ArrayList<Node1> minpaht){ if(x<0||x>=row||y<0||y>=col||book[x][y]==1||mat[x][y]==1){ return; } path.add(new Node1(x,y)); book[x][y]=1; if(x==row-1&&y==col-1){ if(minpaht.isEmpty()||path.size()<minpaht.size()){ minpaht.clear(); for (Node1 n:path) { minpaht.add(n); } } } getMinPath(mat,row,col,x+1,y,book,path,minpaht); getMinPath(mat,row,col,x-1,y,book,path,minpaht); getMinPath(mat,row,col,x,y+1,book,path,minpaht); getMinPath(mat,row,col,x,y-1,book,path,minpaht); path.remove(path.size()-1); book[x][y]=0; } }