资源简介
68wih4.rar
代码片段和文件信息
#include
#include
#include
#include
#include
using namespace std;
#define MAX_NODE 26 // 最大结点数
#define COST_NO_link INT_MAX // 定义结点之间没有连接的花销为INT_MAX吗
int Graph[MAX_NODE][MAX_NODE];
int Cost[MAX_NODE][MAX_NODE];
int V_dingdianshu E_bianshu Start_Point; // 顶点数和边数,以及开始的起点(以0开始)
int Odd_Grouping[MAX_NODE]; // 为0表示不为奇,为1表示为奇,从2开始表示配对分组情况,如同为2的两个为一组,同为3的两个为一组,……
int Bak_Odd_Grouping[MAX_NODE]; // 最好情况下分组策略的备份,因为可能还有其他情况更好,如果有,就更新此备份。
int SHORTEST_PATH_WEIGHT(COST_NO_link); // 如果存在奇度数点,这里是记录的添加最短路径的最小值,是所有点两两分组的最短路径之和的最小值。此值对应Bak_Odd_Grouping所描述的分组情况。
int Dist[MAX_NODE]; // Dijstra算法中,求从v0到v1最短路径结果,里面包含v0到最短路径上各点的最短权值
int ShortCache[MAX_NODE][MAX_NODE]; // Dijstra算法中,求点v0到v1的最短路径记录值,当第一次求时,把结果存到本数组中,下次如果还在相同调用,则直接返回本数组中相应值。
// 数据输入,会用到Graph和Cost
void Input()
{
int i j;
int m n;
char cs cm cn;
int w;
cout<< “输入图的顶点数:“;
cin>> V_dingdianshu;
cout<<“输入图边的数目:“;
cin>>E_bianshu;
cout<<“输入起点:“;
cin>>cs;
Start_Point = cs - ‘a‘;
for(i = 0; i < V_dingdianshu; i++)
{
for(j = 0; j < V_dingdianshu; j++)
{
Graph[i][j] = 0;
ShortCache[i][j] = 0;
Cost[i][j] = COST_NO_link;
}
Cost[i][i] = 0; // 置自己到自己为0
}
cout << “输入“ << E_bianshu << “条边对应的顶点和权值(顶点从a开始编号):“ << endl;
for(i = 0; i < E_bianshu; i++)
{
cin >> cm >> cn >> w;
m = cm - ‘a‘;
n = cn - ‘a‘;
Graph[m][n] += 1;
Graph[n][m] += 1;
Cost[m][n] = w;
Cost[n][m] = w;
}
}
int Dijstra(int v0 int v1 bool useCache)
{
if(useCache && ShortCache[v0][v1] != 0) // 之前计算过了,直接返回值
{
return ShortCache[v0][v1];
}
int i s w min minIndex;
bool Final[MAX_NODE];
for (s = 0; s < V_dingdianshu; s++)// 初始化最短路径长度数据,所有数据都不是最终数据
{
Final[s] = false;
Dist[s] = COST_NO_link; // 初始最大距离
}
Final[v0] = true;// 首先选v0到v0的距离一定最短,最终数据
Dist[v0] = 0;
s = v0; // 0 预先选中v0点
for (i = 0; i < V_dingdianshu; i++)
{
for(w = 0; w < V_dingdianshu; w++)// 1 更新该点到其他未选中点的最短路径
{
if(!Final[w] // w点未选中
&& Cost[s][w] < COST_NO_link // 更新点应该与选中点s相连
&& Dist[w] > Dist[s] + Cost[s][w]) // 通过点s会有更短的路径
{
if(Dist[s] + Cost[s][w] <= 0)
{
cout << “求最短路径数据溢出。“ << endl;
exit(-1);
}
Dist[w] = Dist[s] + Cost[s][w];
}
}
if(s == v1)// 1.5 如果在中间过程找到了目标点v1,则不再继续计算了
{
ShortCache[v0][v1] = Dist[s];
ShortCache[v1][v0] = Dist[s];
return Dist[s];
}
min = COST_NO_link;// 2 选中相应点
for(w = 0; w < V_dingdianshu; w++)
{
if(!Final[w] // 未选中
&& Dist[w] < min) // 值更小
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 342813 2014-07-03 15:06 中国邮路\Debug\main.obj
文件 82944 2014-08-03 16:30 中国邮路\Debug\vc60.idb
文件 143360 2014-07-03 15:06 中国邮路\Debug\vc60.pdb
文件 577605 2014-07-03 15:06 中国邮路\Debug\中国邮路.exe
文件 813704 2014-07-03 15:06 中国邮路\Debug\中国邮路.ilk
文件 2713496 2014-07-03 14:48 中国邮路\Debug\中国邮路.pch
文件 1139712 2014-07-03 15:06 中国邮路\Debug\中国邮路.pdb
文件 11515 2014-07-03 15:06 中国邮路\main.cpp
文件 4304 2014-07-03 15:47 中国邮路\中国邮路.dsp
文件 541 2014-07-03 14:47 中国邮路\中国邮路.dsw
文件 41984 2014-08-03 16:30 中国邮路\中国邮路.ncb
文件 48640 2014-08-03 16:30 中国邮路\中国邮路.opt
文件 250 2014-08-03 16:29 中国邮路\中国邮路.plg
目录 0 2014-07-03 15:06 中国邮路\Debug
目录 0 2014-08-03 16:30 中国邮路
----------- --------- ---------- ----- ----
5920868 15
- 上一篇:让Xcode支持iOS11.4 Beta设备真机测试
- 下一篇:员工档案管理系统
相关资源
- 计算机组成原理试题集.rar
- rar(31)
- GBT_19668[1]_信息化工程监理规范1-6部分
- 现代控制理论.pdf
- GB_T18655-2018车辆、船和内燃机无线电骚
- 阿里妈妈订单同步助手带创建pid功能
- GD22-2015电气电子产品型式认可试验指
- yivdtb.rar
- 概率論基礎教程之答案.zip
- [Damelio_Robert]_The_Basics_of_Process_Mapping
- USB2.0技术规范(中文).pdf
- u011433684_10137387.zip
- 合成孔径雷达成像原理.zip
-
ComputerOrganizationandem
beddedSystems.6E.p - RSoft资料Rsof简介以及仿真指导书.zip
- CiA-402-的-马达控制器.pdf
- 7”亚龙生产线.rar
- [电工电子学].叶挺秀.文字版.pdf
- 多传感器数据融合理论及应用,Lawr
- 异速联标准版免狗注册机.zip
- GBT_28588-2012_全球导航卫星系统连续运
- 大型互联网项目SSM到SpringBoot-从零开发
- GBT28181-2016公共安全视频监控联网系统
- PowerCollection.zip
- u010990737_5539827.zip
- d2154d954808ee66b4518a49c990c7b3.rar
- 小程序素材抓取.exe
- BT种子批量转磁力链.rar
- 2b9799b34dafa71a6e08919d31a5984a.rar
- 统计学.zip
评论
共有 条评论