有关一道遍历算法的题目

问题描述

有关一道遍历算法的题目

有道题目,有一个点A和若干点,所有的点之间都互相可以连通,并且该连线上都有一个对应的权值,如何设计算法从A点出发遍历所有的点然后回到A点,所得到的权值和最小,并且每个点都可以经过不止一次(没C币了抱歉啊)

解决方案

这个就是迪杰斯特拉算法么,你百度一下实现方法。

解决方案二:

听来的一道算法题目
一道算法题目的解法
分享一道很有意思的算法题目

解决方案三:

如果这个问题每个点都只能经过一次的话就是一个标准的旅行商(TSP)问题。你可以百度下,解决方法有很多。除了楼上的还有astar(迪杰斯特拉优化版),蚁群算法等。楼主可以试试。

时间: 2022-12-17

有关一道遍历算法的题目的相关文章

二叉树遍历算法之一:前序遍历

递归实现前序遍历 二叉树的前序遍历是指从根节点出发,按照先根节点,再左子树,后右子树的方法遍历二叉树中的所有节点,使得每个节点都被访问一次. 当调用遍历算法的时候前序遍历的具体过程如下: 首先访问根节点,如果根节点不为空,执行输出语句,打印根节点的值. 如果左子树不为空,则访问根节点的左孩子,并输出根节点做孩子的值 继续访问根节点的左孩子的左孩子,如果不为空则继续输出该左孩子的值: 如果这时左孩子为空,说明该节点是叶子节点,则按照先左孩子后右孩子的访问方式访问其左右孩子,如果不为空就打印输出 左

二叉树创建及遍历算法

//二叉树处理头文件 //包括二叉树的结构定义,二叉树的创建,遍历算法(递归及非递归), /* 作者:成晓旭 时间:2001年10月7日(18:49:38-20:00:00) 内容:完成二叉树创建,二叉树的前,中,后序遍历(递归) 时间:2001年10月7日(21:09:38-22:09:00) 内容:完成二叉树的前,中序遍历(非递归) 时间:2001年10月8日(10:09:38-11:29:00) 内容:完成查找二叉树的静,动态查找(非递归) */ #include "stdlib.h&qu

二叉树遍历算法集合

二叉树遍历算法集合(前中后序遍历的递归和非递归算法,层序遍历算法) 费了两天时间写的,包括前中后序遍历的递归和非递归算法,还有层序遍历总共2*3 + 1 = 7中遍历二叉树的算法,感觉其中后序遍历的非递归算法比较困难,想了很久最后的实现还是不够优雅,请大家指正~~ 总共三个文件,一个头文件,一个对应的cpp文件,还有一个用于测试的文件. 头文件: /**//******************************************************************** c

二叉树的非递归后序遍历算法案例解析

 这篇文章主要介绍了二叉树的非递归后序遍历算法实例,需要的朋友可以参考下 前序.中序.后序的非递归遍历中,要数后序最为麻烦,如果只在栈中保留指向结点的指针,那是不够的,必须有一些额外的信息存放在栈中. 方法有很多,这里只举一种,先定义栈结点的数据结构    代码如下: typedef struct{Node * p; int rvisited;}SNode //Node 是二叉树的结点结构,rvisited==1代表p所指向的结点的右结点已被访问过.   lastOrderTraverse(Bi

二叉树的非递归后序遍历算法实例

 这篇文章主要介绍了二叉树的非递归后序遍历算法实例,需要的朋友可以参考下 前序.中序.后序的非递归遍历中,要数后序最为麻烦,如果只在栈中保留指向结点的指针,那是不够的,必须有一些额外的信息存放在栈中. 方法有很多,这里只举一种,先定义栈结点的数据结构    代码如下: typedef struct{Node * p; int rvisited;}SNode //Node 是二叉树的结点结构,rvisited==1代表p所指向的结点的右结点已被访问过.   lastOrderTraverse(Bi

一道c语言的题目,求解答

问题描述 一道c语言的题目,求解答 有函数原型为void f(int,int *);主函数中有变量定义:int a,*p=&a,b[10];则下列几种调用错误的是: A·f(a,p) B·f(*p,b) C·f(b,&a) D·f(*p,p) 我的想法是:子函数要接收一个整形变量,一个指针变量,那么B选项中b不是指针常量么? 求助大神们解答!谢谢! 答案是C 解决方案 C B中 b 是数组名,可以看作 const 的指针 C中第一个参数是b,但实际参数是 int 解决方案二: B 选项中的

由一道百度之星题目写起 谈谈编程中的分类的思想

百度之星,是全球最大的中文搜索引擎,百度公司面向中国高校学生和编程爱好者所举办的高水平的程序设计大赛.他所考试的题目,全部都是算法的题目. 鄙人虽然是一个非主流的.net程序员,在工作之余,喜爱算法. 我觉得这个题目有点意思,故而分享给大家,我想到两种方法,提供大家,希望对大家起了一个开阔思路的作用. 更重要想谈一谈算法中的分治算法. 首先,题目是那样的: 请编写程序,找出下面"输入数据及格式"中所描述的输入数据文件中最大重叠区间的大小. 对一个正整数n,如果n在数据文件中某行的两个正

图的深度优先遍历算法

前言 图的遍历与前面文章中的二叉树遍历还是存在很大区别的.所谓图的遍历指的是从图中的某一个顶点出发访问图中的其余顶点,并且需要保证每个顶点只被访问一次.由于图比二叉树复杂得多,所以前面二叉树的遍历算法在图中是行不通的.因为对于任意一个顶点来讲,都可能与其余的顶点发生连接.如果不对访问的顶点做一些处理,出发重复访问的几率是很高的.因此,一个基本思想是设置一个标记数组,主要用于标记已经被访问过的顶点.图的遍历算法主要有两种:深度优先遍历和广度优先遍历.本篇文章主要介绍的是深度优先遍历算法. 深度优先

图的广度优先遍历算法

前言 广度优先遍历算法是图的另一种基本遍历算法,其基本思想是尽最大程度辐射能够覆盖的节点,并对其进行访问.以迷宫为例,深度优先搜索更像是一个人在走迷宫,遇到没有走过就标记,遇到走过就退一步重新走:而广度优先搜索则可以想象成一组人一起朝不同的方向走迷宫,当出现新的未走过的路的时候,可以理解成一个人有分身术,继续从不同的方向走,,当相遇的时候则是合二为一(好吧,有点扯了). 广度优先遍历算法的遍历过程 仍然以上一篇图的深度优先遍历算法的例子进行说明,下面是广度优先遍历的具体过程: 从起点0开始遍历