/*********************************************************************
1.实验目的:
通过实验理解算法的概念、算法的表示、算法的时间复杂度和空间复杂度分析;
运用熟悉的编程工具对推销员问题进行求解,初步学会分析算法的时间复杂度和空间复杂度;
2.实验内容:
有一推销员,欲到n(n<=10)个城市推销产品。
为了节省旅行费用,在出发前他查清了任意两个城市间的旅行费用,
想找到一条旅行路线,仅经过每个城市一次,且使旅行费用最少。
本问题已知城市n,和n*n的表达任意两个城市间费用的矩阵。
试求最短路径及其费用;
3.实验要求:
编制程序并对其时间复杂度和空间复杂度进行分析.
*********************************************************************/
#include<iostream>
#include<string.h>
using namespace std;
#define MAXNUM 10
int cost[MAXNUM][MAXNUM]; //花费
int seq[MAXNUM]; //路径
bool used[MAXNUM]; //是否重复
int n;
int tcost; //总花费
int minicost; //最小花费
int cho[MAXNUM]; //当前最优路径
int input()
{
cout<<"输入城市数:"<<endl;
cin>>n;
cout<<"输入n*n的费用:"<<endl;
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cin>>cost[i][j];
}
}
return 0;
}
void f(int m)
{
for(int i=0;i<n;i++)
{
if(!used[i])
{
used[i]=true;
seq[n-m]=i;
if(m>1)
{
f(m-1);
}
else//n==1
{
tcost=0;
for(int j=0;j<n-1;j++)
{
tcost+=cost[seq[j]][seq[j+1]];
}
if(tcost<minicost || minicost==0)
{
minicost=tcost;
for(int k=0;k<n;k++)
{
cho[k]=seq[k];
}
}
}
used[i]=false;
}
}
};
int ETS()
{
f(n);
return 0;
}
int output()
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cout<<cost[i][j]<<endl;
}
}
cout<<"最小花费:"<<minicost<<endl;
cout<<"路径:"<<endl;
for(int j=0;j<n;j++)
cout<<"第"<<j+1<<"站是:"<<cho[j]+1<<endl;
return 0;
}
int main()
{
memset(cost,0,sizeof(cost));
memset(cost,0,sizeof(seq));
memset(cost,0,sizeof(used));
memset(cho,0,sizeof(cho));
n=0;
tcost=0;
minicost=0;
input();
ETS();
output();
return 0;
}
ETS.zip_ETS_推销员问题_推销员问题 ets
版权申诉
107 浏览量
2022-09-14
20:31:39
上传
评论
收藏 1KB ZIP 举报
小贝德罗
- 粉丝: 69
- 资源: 1万+
最新资源
- 基于matlab实现电力系统仿真计算软件包,包括潮流计算,最优潮流计算等.rar
- 基于matlab实现电力系统各种故障波形仿真,单相接地故障,两相间短路,两相接地短路,三相短路等.rar
- 基于matlab实现电动汽车动力性,爬坡性,续驶里程等性能仿真.rar
- Python动态烟花代码.pdf
- 基于matlab实现串口发送接收数据 可配置端口,波特率等 发送可选择ASCII方式或HEX方式
- matlab基于BP神经网络手写字母识别(单一).zip代码9
- 基于matlab实现编写的串口调试工具,数据接收部分采用中断方式,保证了实时的数据显示
- 基于matlab实现39节点电力系统合闸角调控过程中的机组和负荷的灵敏度计算.rar
- HBase数据库性能调优
- 原生微信小程序源码 - -首字母排序选择
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈