5深度优先算法5深度优先算法
计算机算法的设计与分析实验报告
——深度优先遍历
一、算法
基本思路
1、在每个阶段的决策时,采取能深则深的原则试探所有可行的方案,一旦
深入一层则保存当前操作引起的状态。
2、一旦试探失败,为了摆脱当前失败状态,采取回到上一阶段尝试下一方
案的策略(回溯策略);或者在求解所有解时,求得一个解后,回溯到上一阶段
尝试下一方案,以求解下一个解。
3、在各个阶段尝试方案时,采取的是穷举的思想。
二、代码
#include "stdafx.h"
#include//构造有向图p162
#i...
5深度优先算法
计算机算法的
与分析实验报告
——深度优先遍历
一、算法
基本思路
1、在每个阶段的决策时,采取能深则深的原则试探所有可行的
,一旦
深入一层则保存当前操作引起的状态。
2、一旦试探失败,为了摆脱当前失败状态,采取回到上一阶段尝试下一方
案的策略(回溯策略);或者在求解所有解时,求得一个解后,回溯到上一阶段
尝试下一方案,以求解下一个解。
3、在各个阶段尝试方案时,采取的是穷举的思想。
二、代码
#include "stdafx.h"
#include
//构造有向图p162
#include
#include
#define INFINITY 10000//最大值,无穷
#define MAX_VERTEX_NUM 20//最大顶点个数,即可以计算的最大规模 typedef struct ArcCell
{
float adj;//无权图为1或0,有权图为权重
char info[30];//该弧相关信息
}ArcCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
typedef struct
{
char vexs[MAX_VERTEX_NUM][20];//顶点向量,如v1,v2,...等
AdjMatrix arcs;
int vexnum,arcnum;
}MGraph;
//char temp[100][20];//作成全局变量
int LocateVex(MGraph G,char *v) {
int i,num=-1;
for(i=0;i>direct;
cout<<"各顶点无信息则输入数字0,有信息输入其他数字."<>IncInfo;
cout<<"请输入顶点和弧数目:"<>G.vexnum>>G.arcnum;
cout<<"请输入"<>p;//注意vexs[MAX_VERTEX_NUM]中的MAX_VERTEX_NUM大于G.vexnum
}
for(i=0;i>p;
i=LocateVex(G,p);
cout<<"接受点:";
p=v[1];
cin>>p;
j=LocateVex(G,p);
cout<<"权重:";
cin>>w;//输入格式: v1 v2 18
cout<<"i="<>p;
}
if(direct!=1)
G.arcs[j][i]=G.arcs[i][j];
}
cout<<"顶点数是:"<=0;w=NextAdjVex(G,v,w))
if(!visited[w])
DFS(G,w);
}
void DFSTraverse(MGraph G) {
int v,i;
/////////////////
for(i=0;i
本文档为【5深度优先算法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。