zoukankan      html  css  js  c++  java
  • 797. All Paths From Source to Target

    题目描述:

    Given a directed, acyclic graph of N nodes.  Find all possible paths from node 0 to node N-1, and return them in any order.

    The graph is given as follows:  the nodes are 0, 1, ..., graph.length - 1.  graph[i] is a list of all nodes j for which the edge (i, j) exists.

    Example:
    Input: [[1,2], [3], [3], []] 
    Output: [[0,1,3],[0,2,3]] 
    Explanation: The graph looks like this:
    0--->1
    |    |
    v    v
    2--->3
    There are two paths: 0 -> 1 -> 3 and 0 -> 2 -> 3.
    

    Note:

    • The number of nodes in the graph will be in the range [2, 15].
    • You can print different paths in any order, but you should keep the order of nodes inside one path.

    解题思路:

    使用DFS方法或者回溯法,这里使用的是DFS算法。

    代码:

     1 class Solution {
     2 public:
     3     vector<vector<int>> allPathsSourceTarget(vector<vector<int>>& graph) {
     4         vector<vector<int> >paths;
     5         vector<int> path;
     6         dfs(graph, paths, path, 0);
     7         return paths;
     8     }
     9     void dfs(vector<vector<int> >& graph, vector<vector<int> >& paths, vector<int> path, int now) {
    10         path.push_back(now);
    11         if (now == graph.size() - 1) {
    12             paths.push_back(path);
    13             return;
    14         }
    15         for (auto next : graph[now]) {
    16             dfs(graph, paths, path, next);
    17         }
    18     }
    19 };
  • 相关阅读:
    C++之类和对象
    PHP程序设计基础
    PHP函数和MySQL数据库
    HTML语言基础
    文件和目录1(文件属性和权限)
    文件IO
    查找
    使用tcpdump抓包实例
    导入模块的2种方法
    ansible启用sudo执行命令
  • 原文地址:https://www.cnblogs.com/gsz-/p/9393174.html
Copyright © 2011-2022 走看看