TSP-旅行商问题
2024-09-27 11:34:28
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int num = 0;
int map[4][4] = {0,3,6,7,
5,0,2,3,
6,4,0,2,
3,7,5,0
};
vector<int> s;
void run(int x,int pre,int sum,int pass[5])
{
int i,pass_flag = 1;
//初始化副本
int pass2[5];
for(i = 0;i < 5;i++)
{
pass2[i] = pass[i];
//cout << pass2[i] << endl;
}
//当前城市做上标记
pass2[x] = map[pre][x];
//设计出口 pass中的数据都不是-1 说明到过4个城市
for(i = 0;i < 4;i++)
{
if(pass2[i] == -1)
{
pass_flag = 0;
break;
}
}
if( pass_flag )
{
//sum + 从最后一座城市返回起始城市
sum += map[x][0];
//将整个路程存放在向量s中
s.push_back(sum);
pass2[4] = map[x][0];
//输出路线
cout << "路程方案" << ++num << endl;
for(i = 1;i < 5;i++)
{
cout << pass2[i] << "\t" ;
}
cout << endl;
}
else
{
//加上从上一个城市到达本城市需要的路程
//sum += map[pre][x];
for( i = 0;i < 4;i++ )
{
//判断下一个城市是否已经到达过
if(pass2[i] == -1)
{
//没有达到过 便进行递归循环
run(i,x,sum+map[x][i],pass2);
//pass2[i] = 1;
}
}
}
}
int main()
{
int x = 0;
int y = 0;
int pass[5] = {-1,-1,-1,-1,-1};
//当前所在城市 走过路程 已经走过的城市
run(x,x,0,pass);
sort(s.begin(),s.end());
cout << "最长:" << *(s.end()-1) << endl;
cout << "最短:" << *s.begin() << endl;
return 0;
}
最新文章
- vector - vector product
- python常用的内置库
- mac系统安装php redis扩展
- Android复制assets目录下的图片到内存
- 洛谷P2015 二叉苹果树
- --hdu 1800 Flying to the Mars(贪心)
- python自学笔记一
- MEF 编程指南(四):声明导入
- 【转】Linux內核驅動之GPIO子系統(一)GPIO的使用 _蝸牛
- CentOS6.5安装elasticsearch+logstash+kibana
- javascript 学习随笔
- 把MSSQL的表数据查询成 insert into格式的函数
- 一个Android上的以滑动揭示的方式显示并切换图片的View
- 架构之CDN缓存
- 关于java集合的练习
- CSS入门介绍(一)
- 利用nginx搭建小型的文件服务器
- spring boot log4j2配置
- python全栈开发day31-操作系统介绍,异步、同步、阻塞、非阻塞,进程
- PathUtil
热门文章
- java 的几种引用
- 说说你对用SSH框架进行开发的理解
- CF922 CodeForces Round #461(Div.2)
- 【洛谷2744 】【CJOJ1804】[USACO5.3]量取牛奶Milk Measuring
- mysql url 连接配置的一个小坑。 工作中不会遇到。 学习的时候会
- 在eclipse中API的封装和调用
- react实战第一步--搭建项目
- Java集合基本概念及元素添加
- mybatis-配置文件mybatis-config.xml
- iOS 提交审核报错 ERROR ITMS-90087解决办法