[力扣算法]《797. 所有可能的路径》
class Solution {
// follow the solution from the official website of leetcode
List<List<Integer>> ans = new ArrayList<List<Integer>>();
Deque<Integer> stack = new ArrayDeque<Integer>();
public List<List<Integer>> allPathsSourceTarget(int[][] graph) {
// if(graph == null || graph.length == 0)return new
stack.offerLast(0);
int n = graph.length;
dfs(graph, 0, n-1);
return ans;
}
public void dfs(int[][]g, int n, int m){
if(n == m){
ans.add(new ArrayList<Integer>(stack));
return;
}
for(int i : g[n]){
stack.offerLast(i);
dfs(g, i, m);
// dfs(g, i, n); // error 2: parameter error use results
// dfs(i, n); // error 1: parameter error use result
stack.pollLast();
}
// stack.pollLast(); // error 3: place error
}
// follow the solution from the official website of leetcode
// public List<List<Integer>> allPathsSourceTarget(int[][] graph) { // the 1st try: failed
// // if(graph.length == 0)return new List(){};
// // int n = graph.length;
// // int[][] tar = new int[n][n];
// // for(int i = 0; i < n; ++i){
// // int m = graph[i].length;
// // for(int j = 0; j < m; ++j){
// // int k = graph[i][j];
// // tar[i][k] = 1;
// // }
// // }
// // int[] visited = new int[len];
// // List<List<Integer>> l = new ArrayList<List<Integer>>();
// // for(int i = 0; i< n; ++i){
// // for(int j = 0; j < m; ++j){
// // if(graph[i][j] == 1){
// // wfs(l, graph, visited, i, j);
// // }
// // }
// // }
// }
// public void static wfs(List<List<Integer>> l,int[][] g, boolean[] visited, int r, int c){
// int len = g.length;
// List<Integer> list;
// if(r<0 || r>=len || c<0 || c>=len || visited[c]==true || g[r][c]==0)return;
// visited[j] = true;
// list = new ArrayList<Integer>();
// list.add(j);
// g[c][r] = 0;
// wfs(l, g, visited, c, )
// }
// the 1st try: failed
}