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

公司网站建设管理办法汉中网络推广

公司网站建设管理办法,汉中网络推广,电子商务网站建设有管理课后答案,永川最新消息时间复杂度: 最坏情况下为O(V!),其中V是顶点数 实际运行时间取决于图的拓扑结构 这个实现可以输出有向无环图的所有可能的拓扑排序,并能检测图中是否存在环。 算法思想: 使用回溯法枚举所有可能的拓扑排序 在每一步选择当前入…

  1. 时间复杂度

    • 最坏情况下为O(V!),其中V是顶点数

    • 实际运行时间取决于图的拓扑结构

这个实现可以输出有向无环图的所有可能的拓扑排序,并能检测图中是否存在环。

  1. 算法思想

    • 使用回溯法枚举所有可能的拓扑排序

    • 在每一步选择当前入度为0的顶点,递归处理剩余顶点

    • 回溯时恢复入度和访问状态

  2. 关键数据结构

    • inDegree:记录每个顶点的当前入度

    • visited:标记顶点是否已被访问

    • currentOrder:存储当前正在构建的拓扑排序

    • allOrders:存储所有找到的拓扑排序

  3. 环检测

    如果无法找到任何拓扑排序(allOrders为空),说明图中存在环

 

#include <bits/stdc++.h>
using namespace std;vector<vector<int>> graph;
vector<int> inDegree;
vector<bool> visited;
vector<int> currentOrder;
vector<vector<int>> allOrders;
void allTopSortUtil(int n) {// 标志变量,表示是否找到了一个有效的顶点bool flag = false;for (int u = 0; u < n; u++) {// 选择一个入度为0且未被访问的顶点if (inDegree[u] == 0 && !visited[u]) {// 减少所有邻接顶点的入度for (int v : graph[u]) {inDegree[v]--;}// 将当前顶点加入结果并标记为已访问currentOrder.push_back(u);visited[u] = true;// 递归处理剩余顶点allTopSortUtil(n);// 回溯:重置访问标记和入度visited[u] = false;currentOrder.pop_back();for (int v : graph[u]) {inDegree[v]++;}flag = true;}}// 如果没有顶点可选,说明已经得到一个完整的拓扑排序if (!flag) {if ((int)currentOrder.size() == n) {allOrders.push_back(currentOrder);}}
}vector<vector<int>> allTopSorts(int n) {vector<int> inDegree(n, 0);vector<bool> visited(n, false);// 计算每个顶点的入度for (int u = 0; u < n; u++) {for (int v : graph[u]) {inDegree[v]++;}}allTopSortUtil(n);return allOrders;
}int main() {// 示例:构建一个有向无环图int n = 6;  // 节点数量vector<vector<int>> graph(n);// 添加边graph[5].push_back(2);graph[5].push_back(0);graph[4].push_back(0);graph[4].push_back(1);graph[2].push_back(3);graph[3].push_back(1);// 获取所有可能的拓扑排序vector<vector<int>> allOrders = allTopSorts(n);// 输出结果if (allOrders.empty()) {cout << "图中存在环,无法进行拓扑排序!" << endl;} else {cout << "所有可能的拓扑排序:" << endl;for (auto& order : allOrders) {for (int node : order) {cout << node << " ";}cout << endl;}cout << "共找到 " << allOrders.size() << " 种拓扑排序" << endl;}return 0;
}

http://www.dtcms.com/a/516052.html

相关文章:

  • 深度学习(14)-Pytorch torch 手册
  • 喜讯|中国质量认证中心(CQC)通过个人信息保护合规审计服务认证
  • iOS原生与Flutter的交互编程
  • 【研究生随笔】Pytorch中的线性回归
  • OCR 识别:电子保单的数字化助力
  • 好看的网站哪里找网站免费软件
  • Jmeter接口常用组织形式及PICT使用指南
  • iOS 混淆实战,多工具组合完成 IPA 混淆、加固与发布治理(iOS混淆|IPA加固|无源码混淆|App 防反编译)
  • 飞牛fnNAS搭建Web网页版OFFICE(WPS)软件
  • Mysql杂志(三十四)——MVCC、日志分类
  • Qwen3ForCausalLM 源码解析
  • 用多工具组合把 iOS 混淆做成可复用的工程能力(iOS混淆 IPA加固 无源码混淆 Ipa Guard)
  • 扎根乡土,科技赋能:中和农信的综合助农之路
  • SignalR 协议深度分析
  • 在 Linux 系统上安装 Miniconda、安装 Xinference,并设置 Xinference 开机自启动
  • 第一篇:把任意 HTTP API 一键变成 Agent 工具
  • 使用PCIE B210烧写SIM卡
  • 大模型太贵太慢?豆包1.6想打破这个“行业幻觉”
  • 卖酒网站排名阳江 网站建设
  • 唐宇迪2025最新机器学习课件——学习心得(1)
  • python基于卷积神经网络的桥梁裂缝检测系统(django),附可视化界面,源码
  • 网站建设要学什么asp.net做电商网站设计
  • OpenTelemetry日志采集和链路跟踪部署与问题解决文档
  • Rocky 9 单机安装elastic-9.1.5
  • 黑马程序员C++提高编程_3.STL- 常用容器_list容器
  • 免费模板网站word医疗室内设计网站推荐
  • flutter实现web端实现效果
  • 网站建设与管理题目wordpress页面标题标签
  • 在线预览docx、ppt、excel、doc、pdf等文档解决方案
  • !process 命令详解