当前位置: 首页 > news >正文

塘沽做网站比较好的随州制作网站

塘沽做网站比较好的,随州制作网站,缘震网络网站建设之f套餐,武穴建设网站所有可达路径 98. 所有可达路径 (kamacoder.com) 深度优先搜索&#xff0c;和之前的回溯题类似。 #include <iostream> #include <vector> using namespace std;// 定义一个二维向量来存储所有可能的路径 vector<vector<int>> paths; // 定义一个向…

所有可达路径

98. 所有可达路径 (kamacoder.com)

深度优先搜索,和之前的回溯题类似。

#include <iostream>
#include <vector> 
using namespace std;// 定义一个二维向量来存储所有可能的路径
vector<vector<int>> paths;
// 定义一个向量来存储当前路径
vector<int> path;// 定义深度优先搜索函数
void dfs(const vector<vector<int>>& graph, int x, int n) {// 如果到达节点n,将当前路径添加到所有路径中if (x == n) {paths.push_back(path);return;}// 遍历所有可能的下一个节点for (int i = 1; i <= n; i++) {// 如果节点x和节点i之间有边(即连通)if (graph[x][i] == 1) {// 将节点i添加到当前路径path.push_back(i);// 递归地继续搜索从节点i开始的路径dfs(graph, i, n);// 回溯,移除节点i,尝试其他可能的路径path.pop_back();}}
}int main() {int N, M; // N表示节点数量,M表示边的数量cin >> N >> M; // 输入节点数量和边的数量// 创建一个(N+1) x (N+1)的二维向量,初始化所有值为0vector<vector<int>> graph(N + 1, vector<int>(N + 1, 0));int s, t;while (M--) { // 循环M次,输入每条边的两个节点cin >> s >> t;graph[s][t] = 1; // 表示节点s和节点t之间有边,即连通}// 从节点1开始搜索,将节点1添加到当前路径path.push_back(1);dfs(graph, 1, N); // 调用DFS函数搜索所有路径// 如果没有找到路径,输出-1if (paths.size() == 0)cout << -1 << endl;// 输出所有找到的路径for (auto x : paths) {for (int i = 0; i < x.size() - 1; i++) {cout << x[i] << " ";}cout << x[x.size() - 1] << endl;}
}

在构建图是,读入所有边,时间复杂度为O(M),在DFS是,最坏情况需要访问图中的每个节点和每天便,DFS的时间复杂度为O(N+M)。总的时间复杂度为O(N+M)。

空间复杂度,用邻接矩阵来存储graph信息需要(N+1)^2(从0到N+1的矩阵),paths在图全连接的情况下,可能要存储2^(N-1)条路(1-N),path为O(N),空间复杂度为O(2^(N-1))。

邻接链表参考

代码随想录 (programmercarl.com)

邻接数组也可以自己写写看。

所有可能的路径

797. 所有可能的路径 - 力扣(LeetCode)

上题的核心代码,代码如下,分析基本和上题相同。

class Solution {
public:// 定义一个向量来存储当前路径vector<int> path;// 定义一个二维向量来存储所有可能的路径vector<vector<int>> paths;// 定义深度优先搜索函数void dfs(const vector<vector<int>>& graph, int x, int n) {// 如果到达目标节点n,将当前路径添加到所有路径中if (x == n) {paths.push_back(path);return;}// 遍历当前节点的所有相邻节点for (int i = 0; i < graph[x].size(); i++) {// 将相邻节点添加到当前路径path.push_back(graph[x][i]);// 递归地继续搜索从相邻节点开始的路径dfs(graph, graph[x][i], n);// 回溯,移除刚刚添加的节点,以便尝试其他路径path.pop_back();}}vector<vector<int>> allPathsSourceTarget(vector<vector<int>>& graph) {// 目标节点是图的最后一个节点 graph.size() - 1int n = graph.size() - 1;// 从源节点0开始,将源节点添加到当前路径path.push_back(0);// 调用DFS函数搜索所有路径dfs(graph, 0, n);// 返回找到的所有路径return paths;}
};

http://www.yayakq.cn/news/674117/

相关文章:

  • 中国风格网站模板seo搜索引擎优化
  • 网站开发一对一自助建站系统免费加盟
  • 手机网站设计神器wordpress 子站点
  • 太原seo推广优化阿里巴巴网站的搜索引擎优化案例
  • 商城网站怎么自己搭建最近网站改版文章突然不收录
  • WordPress社工库西安官网优化哪家公司好
  • 免费网站推广在线观看建设工程招投标与合同管理论文
  • 网站报价方案范文网站做镜像的有什么用
  • 衡阳做网站的设计微信小程序
  • 哈尔滨市住房与城乡建设局网站互联网挣钱新方法
  • 安徽省城乡和建设厅网站设计 微网站
  • 任丘市建设局网站企业网站的布局类型
  • 软件网站开发平台网上注册公司流程教程
  • 给网站做镜像网站建设开票写什么
  • 汕头网站制作服务商漳浦网页定制
  • 建设校园网站的好处开发帮官方网站
  • 广州站合肥网站建设网站制作
  • 怎么做网站搜索引擎利于搜索做自己卖东西的网站
  • 怎么把做的网页放入网站网络舆情监测报告
  • 建设网站要服务器吗搭建网站需要什么技术
  • 做商城网站会不会被攻击关键词有哪些?
  • 建设规划工程许可证在当地什么网站小说榜单首页百度搜索风云榜
  • 英文购物网站模板下载服务器做网站FTP必要性大吗
  • h5网站开发中心莱特币做空国外网站
  • 官方网站让第三方建设放心吗百度云用流量做网站
  • 南山做网站推广乐云seo自己造网站
  • 淘宝客做网站教程设计风格好看的网站
  • 义乌建设公司网站市场调研报告1000字
  • 开发型网站报价方法越秀营销型网站
  • 学php网站开发好吗快乐麻花网站源码