c语言哈密顿路径算法,用于检查给定图中是否存在哈密顿循环或路径的C ++程序...

哈密顿循环是哈密顿路径,因此从哈密顿路径的最后一个顶点到第一个顶点有一条边(在图中)。它在无向图中是一条路径,该路径恰好访问该图的每个顶点一次。

功能和目的:Begin

1.function isSafe() is used to check for whether it is adjacent to the previously added vertex and already not added.

2. function hamiltonianCycle() solves the hamiltonian problem.

3. function hamCycle() uses hamiltonianCycle() to solve the hamiltonian problem.

It returns false if there is no Hamiltonian Cycle possible, otherwise return true and prints the path.

End

示例#include 

#include 

#include 

#define N 5

using namespace std;

void displaytheSolution(int path[]);

bool isSafe(int n, bool g[N][N], int path[], int pos) {

if (g [path[pos-1]][n] == 0)

return false;

for (int i = 0; i 

if (path[i] == n)

return false;

return true;

}

bool hamiltonianCycle(bool g[N][N], int path[], int pos) {

//如果所有顶点都包含在哈密顿循环中

if (pos == N) {

if (g[ path[pos-1] ][ path[0] ] == 1)

return true;

else

return false;

}

for (int n = 1; n 

if (isSafe(n, g, path, pos)) //Check if this vertex can be added to Hamiltonian Cycle

{

path[pos] = n;

//重复构建其余路径

if (hamiltonianCycle (g, path, pos+1) == true)

return true;

path[pos] = -1; //remove vertex if it doesn’t lead to the solution

}

}

return false;

}

bool hamCycle(bool g[N][N]) {

int *path = new int[N];

for (int i = 0; i 

path[i] = -1;

//将顶点0作为路径中的第一个顶点。

If there is a Hamiltonian Cycle, then the path can be started from any point

//图是无向的循环周期

path[0] = 0;

if (hamiltonianCycle(g, path, 1) == false) {

cout<

return false;

}

displaytheSolution(path);

return true;

}

void displaytheSolution(int p[]) {

cout<

cout<

for (int i = 0; i 

cout<

cout<

}

int main() {

bool g[N][N] = {

{0, 1, 0, 1, 1},

{0, 0, 1, 1, 0},

{0, 1, 0, 1, 1},

{1, 1, 1, 0, 1},

{0, 1, 1, 0, 0},

};

hamCycle(g);

return 0;

}

输出结果存在周期: Following is one Hamiltonian Cycle

0 4 1 2 3 0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/302618.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

现在6岁的小朋友都开始学编程了……

前段时间&#xff0c;朋友跟小木说&#xff1a;现在的小孩什么都要学&#xff0c;以后是不是都要学编程了&#xff1f;小木鄙夷地笑了一下&#xff1a;他们已经学编程了啊&#xff01;朋友表情↓↓↓朋友&#xff1a;纳尼&#xff1f;&#xff1f;&#xff1f;我到大学才接触编…

操作分布式文件之三:如何访问和操作远程文件

FttpAdapter fa new FttpAdapter("fttp://10.232.20.151/home/qianfeng.py/fttp/tmp/1.log"); 上面实例化一个FttpAdapter类&#xff0c;并输入一个fttp路径&#xff0c;可以是一个目录路径&#xff0c;也可以是个文件路径 FttpAdapter类提供了一系列访问远程文件的…

记一次 .NET 医院CIS系统 内存溢出分析

一&#xff1a;背景 1. 讲故事前几天有位朋友加wx求助说他的程序最近总是出现内存溢出&#xff0c;很崩溃&#xff0c;如下图&#xff1a;和这位朋友聊下来&#xff0c;发现他也是搞医疗的&#xff0c;哈哈&#xff0c;.NET 在医疗方面还是很有市场的????????????&…

android.mk ndk编译选项优化,Android NDK 编译脚本分析 之一

版权信息&#xff1a;本文为本人原创&#xff0c;欢迎转载&#xff0c;但请著明出处&#xff0c;并保留本版权信息。Android NDK编译脚本编写起来还是是比较简单条理的&#xff0c;然而它的语法和传统的linux GNU Make编译脚本的编写似乎有很大的不同&#xff0c;这让习惯了GNU…

丘成桐:完全不懂数学,才会有“数学无用”的说法

全世界有3.14 % 的人已经关注了数据与算法之美▲中国科学院院长白春礼&#xff08;右&#xff09;与数学家丘成桐&#xff08;左&#xff09;为晨兴数学金奖获得者李思&#xff08;中&#xff09;颁奖培养第一流的学生&#xff0c;首先要有对于学问的兴趣&#xff0c;而非奔着考…

Hadoop 2.0.0-alpha尝鲜安装和hello world

仅供测试学习的文章&#xff0c;不推荐在生产环境使用2.0&#xff0c;因为2.0采用YARN&#xff0c;hive&#xff0c;hbase&#xff0c;mahout等需要map/reduceV1的可能无法使用hadoop 2.0或者会出现意外情况。5月23日&#xff0c;apache发布了hadoop 2.0的测试版。正好跟家呆着…

动手实现一个适用于.NET Core 的诊断工具

前言大家可能对诊断工具并不陌生&#xff0c;从大名鼎鼎的 dotTrace&#xff0c;到 .NET CLI 推出的一系列的高效诊断组件&#xff08;dotnet trace,dotnet sos,dotnet dump&#xff09;等, 这些工具提升了对程序Debug的能力和效率&#xff0c;可以让开发人员从更高层次的维度来…

android 强制下线功能,Android学习之基础知识八—Android广播机制实践(实现强制下线功能)...

强制下线功能算是比较常见的了&#xff0c;很多的应用程序都具备这个功能&#xff0c;比如你的QQ号在别处登录了&#xff0c;就会将你强制挤下线。实现强制下线功能的思路比较简单&#xff0c;只需要在界面上弹出一个对话框&#xff0c;让用户无法进行任何操作&#xff0c;必须…

USB权限的设置

USB设备给我们日常生活中带了很多的方便&#xff0c;能够在不同的不同的移动设备中传递数据。但也给我们的数据安全带来了隐患&#xff0c;它可以拷贝走我们计算机中很机密的信息&#xff01;通过下面的操作后&#xff0c;将使我们有用的信息增加更大安全性&#xff0c;至小也能…

漫谈高数——泰勒级数的物理意义

全世界有3.14 % 的人已经关注了数据与算法之美高等数学干吗要研宄级数问题&#xff1f;是为了把简单的问题弄复杂来表明自己的高深&#xff1f; No,是为了把各种简单的问题/复杂的问题&#xff0c;他们的求解过程用一种通用的方法来表示。提一个问题&#xff0c;99*99等于多少&…

保持学习,从这几个公众号开始!

全世界有3.14 % 的人已经关注了数据与算法之美关注了几百个公众号无目的的看文章却如鸡肋一般食之无味弃之可惜你是否也觉得时间被浪费&#xff1f;生命被辜负了&#xff1f;点击关注下面几个公众号它们每天更新有态度、有温度的原创文字每一篇推文都值得你点开长按二维码&…

IPV6迎来商业元年 运营商短期盈利模式成难点

6月6日&#xff0c;新一代因特网协议IPv6正式上线。据统计&#xff0c;截至4日&#xff0c;中国参加IPv6Launch的网站有65%可在IPv6上存取。 副院长邬贺铨在接受《证券日报》记者采访时表示&#xff1a;“IPV6本身发展过程还有很多问题需要解决&#xff0c;但这不妨碍进行IPV4向…

回顾 | 在 GitHub 上贡献到开源项目

点击蓝字关注我们精彩回顾GitHub 是世界上最大的开源社区&#xff0c;拥有数百万个开源项目。GitHub 的优势之一是在项目上进行协作非常容易。在本研讨会中&#xff0c;我们将介绍在 GitHub 上找到开源项目并为其做出贡献的难易程度。我们将向您展示如何创建拉取请求&#xff0…

html assign无效,Object.assign的一些用法

Object.assign的一些用法2020/11/12 20:19:03  字体&#xff1a;大 中 小 浏览 1289 我要评论需要定制网站程序、公众号程序、微信小程序可以联系&#xff1a;565449214或者加微信13961347334(备注&#xff1a;需要技术)或者在处理一些技术问题时&#xff0c;有什么不懂的地…

R语言和 Python —— 一个错误的分裂

全世界有3.14 % 的人已经关注了数据与算法之美最近有一些文章提出与年龄相关的问题&#xff1a;“崭露头角的年轻数据科学家们是学习R语言还是Python更好?”答案似乎都是“视情况而定”&#xff0c;在现实中没有必要在R和Python中做出选择&#xff0c;因为你两个都用得到。推荐…

.Net之配置文件自定义

前文讲获取配置文件内容的时候&#xff0c;是获取默认的appsettings.json配置文件的配置&#xff0c;下面说明下如何进行自定义配置文件获取1. Json Provider1.1 构建独立的IConfiguration编写方法public static IConfigurationRoot LoadSettings(this IHostEnvironment env){r…

c# 读取大文件方法

/// <summary>/// 读取大文件方法/// </summary>/// <param name"initialPath">原文件绝对地址</param>/// <param name"aimPath">新文件绝对地址</param>private static void CopyFile(string initialPath, string a…

快速修改HTML5,HTML5无刷新修改URL(示例代码)

HTML5新添加了两个api分别是pushState和replaceState&#xff0c;DOM中的window对象通过window.history方法提供了对浏览器历史记录的读取&#xff0c;可以在用户的访问记录中前进和后退&#xff0c;我们可以开始操作这个历史记录堆栈。实例一、通过pushState修改URL通过这句代…

这一平台只要把握住风口期,自己就能当老板!

我是电商珠珠 短视频渐渐走进大家的视野&#xff0c;改变了大家的日常娱乐方式。从19年开始&#xff0c;抖音开始发展电商平台-抖音小店。 在改变大家娱乐方式的同时&#xff0c;还将直播电商的热度掀了起来&#xff0c;由此改变了大家的购物方式&#xff0c;给大家带来了方便…

如何用TensorFlow实现人工智能?

自 2015 年 11 月 9 号发布之后&#xff0c;TensorFlow 逐渐成为人工智能领域最广泛运用的深度学习框架。那么TensorFlow框架到底是什么&#xff1f;TensorFlow 是一个大规模机器学习的开源框架&#xff0c;提供了多种深度神经网络的支持。不仅 Google 在自己的产品线使用 Tens…