有n个城市,用0,1,…,n-1表示,城i,j之间的距离为dij,有一个货郎从城1出发到其他城市一次且仅一次,最后回到城市1,怎样选择行走路线使总路程最短?
不妨设0为起点和终点, d(i, s)为从i出发, 还需访问s中的各个城市一次回到0,走过的距离.
状态转移方程:d(i, s) = min{d(j, s - {j}) + dist(i, j)}

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<vector>
#include <iostream>
using namespace std;#define maxn 20
#define INF 1e5
int Graph[maxn][maxn];
int d[maxn][1<<maxn], n;
int route[maxn][1<<maxn];
int dp(int m, int s)
{if(d[m][s] != -1)return d[m][s];if(!s)return d[m][s] = Graph[m][0];d[m][s] = INF;for(int i = 1; i < n; i++){if(s & (1<<i)){int p = s;p ^= 1<<i;int k = dp(i, p) + Graph[m][i];if(k < d[m][s]){d[m][s] = k;route[m][s] = i;}}}return d[m][s];
}
int main()
{//freopen("in.txt", "r", stdin);cin >> n;for(int i = 0; i < n*(n-1); i++){int m1, m2, m3;cin >> m1 >> m2 >> m3;Graph[m1][m2] = m3;}int s = (1<<n) - 1;s ^= 1;memset(d, -1, sizeof(d));memset(route, 0, sizeof(route));dp(0, s);cout << d[0][s] << endl;int k = 0;cout << k;while(route[k][s]){cout << " " << route[k][s];k = route[k][s];s ^= 1<<k;}cout << " " << 0 << endl;return 0;
}

货郎担问题(TSP)相关推荐

  1. 货郎担问题TSP(dp解法)

    货郎担问题也叫旅行商问题,即TSP问题(Traveling Salesman Problem),是数学领域中著名问题之一. 题目背景 有n个城市,用1,2,-,n表示,城i,j之间的距离为dij,有一 ...

  2. 微信聊天记录备份:当前网络状况复杂和连接失败的解决办法

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议 本文链接(文末链接可直达原文): https://blog.csdn.net/qq_41811874/article/detai ...

  3. 货郎担问题(TSP问题)

    货郎担问题也叫旅行商问题,即TSP问题(Traveling Salesman Problem),是数学领域中著名问题之一. 有n个城市,用1,2,-,n表示,城i,j之间的距离为dij,有一个货郎从城 ...

  4. TSP问题是指旅行家要旅行n个城市,要求各个城市经历且仅经历一次,并要求所走的路径最短。该问题又称为货郎担问题、邮递员问题、售货员问题,是图问题中广为人知的问题

    不要自卑,去提升实力 互联网行业谁技术牛谁是爹 如果文章可以带给你能量,那是最好的事!请相信自己 加油o~ 1.问题描述 所谓TSP问题是指旅行家要旅行n个城市,要求各个城市经历且仅经历一次,并要求所 ...

  5. java货郎担问题求解_货郎担问题(TSP)

    n个城市,两两之间均有道路连接,长度已知.先有一人从某一城市出发,所有城市经过一次且只能经过一次.求最小的总路程. DP方程:设起点为城市0(最终路径是个环,起点在哪都不影响),设D[i][S]为当前 ...

  6. 【一】TSP、VRP、VRP模型介绍

    一. TSP问题数学模型 编辑 TSP,即Traveling Salesman Problem,也就是旅行商问题,又译为旅行推销员问题.货郎担问题,简称为TSP问题,是最基本的路线问题,该问题是在寻求 ...

  7. 旅行商问题(Traveling Saleman Problem,TSP)

    什么是旅行商问题 旅行商问题(Traveling Saleman Problem,TSP)是VRP的特例,由于Gaery[1]已证明TSP问题是NP难题,因此,VRP也属于NP难题. 旅行商问题(TS ...

  8. matlab做TSP,基于matlab TSP问题遗传算法的实现

    %TSP问题(又名:旅行商问题,货郎担问题)遗传算法通用matlab程序 %D是距离矩阵,n为种群个数,建议取为城市个数的1~2倍, %C为停止代数,遗传到第 C代时程序停止,C的具体取值视问题的规模 ...

  9. 遗传算法(Genetic Algorithm )+C++实现解决TSP问题

    概念 项目所在github https://github.com/Sean16SYSU/Algorithms4N 生物进化中的概念 遗传算法中的作用 环境 适应函数 适应性 适应函数值 适者生存 适应 ...

最新文章

  1. python list 删除元素
  2. alexa技能个数_如何在您的技能中使用Alexa演示语言
  3. 基于docker+gunicorn部署sanic项目
  4. Hadoop安装教程_分布式集群
  5. Py之easygui:easygui的简介、安装(最正确安装)、使用方法之详细攻略
  6. java 索取了多表联合查询分页,mybatis-plus多表联合分页查询
  7. ***CI新增记录成功后的返回值判断,是用isset还是empty
  8. Android ListView 的优化
  9. Ubuntu12.04安装小记
  10. ios消息推送机制原理与实现(转)
  11. JS的Date.setMonth()方法坑
  12. linux下怎么将html换成pdf,如何在Linux上使用PHP将HTML/CSS转换为PDF
  13. C++安全方向:(三)课前导学:密码学核心开发技术
  14. 用友U8审核凭证出现列前缀tempdb无效未指定表名的对话框的解决方法
  15. MVC3学习 七 Razor使用、路由模块、框架自带校验
  16. 狗、油腻、保温杯的中年
  17. Jmeter 接口自动化执行报错 无法找到类或者类的方法
  18. 3ds max 2012 VRay 2.0-3ds max 效果图设计与制作-HDRI贴图的应用
  19. Django序列化django REST framework
  20. 初识Centos7.5

热门文章

  1. iOS底层weak的实现原理
  2. Bootstrap(10) 进度条媒体对象和 Well 组件
  3. Android 9 功能和 API
  4. 网页打印宋体不支持加粗效果
  5. jmeter报错 com/amazonaws/auth/AWSCredentials
  6. kali中steghide命令工具教程;7z命令详解;kali中base64命令详解
  7. 用keil软件完成STM32汇编程序的编写
  8. 史上最简单的rar压缩包文档解密方法,rar压缩包权限密码如何解开?
  9. 软件开发团队必备管理工具
  10. 社工攻击@斯拉夫字母