n个城市,两两之间均有道路连接,长度已知。先有一人从某一城市出发,所有城市经过一次且只能经过一次。求最小的总路程。

DP方程:设起点为城市0(最终路径是个环,起点在哪都不影响),设D[i][S]为当前在城市i,将集合S中的城市全部走一遍,再回到城市0的最小总长度。

D[i][S]=min{D[j][S-{j}]+dist[i][j] | j in S}

起始状态:d[i][空集]=dist[0][i] (走一步就回来了)

最终状态:d[0][{1,2,3……n-1}]

时间复杂度:O(n2*2n) (枚举需要O(n)时间)

#include

#include

#include

#include

#define rep(i,x,y) for (int i=x;i<=y;i++)

#define read(x) scanf("%d",&x)

using namespace std;

const int maxn=15+1;

const int inf=100000000;

int dist[maxn][maxn],d[maxn][(1<

bool vis[maxn][(1<

int dp(int k,int s)

{

if (vis[k][s]) return d[k][s];

vis[k][s]=1;

d[k][s]=inf;

rep(i,0,n-1)

if ((1<

return d[k][s];

}

int solve()

{

memset(vis,0,sizeof(vis));

rep(i,0,n-1) {d[i][0]=dist[0][i];vis[i][0]=1;}

return dp(0,(1<

}

int main()

{

read(n);

rep(i,0,n-1)

rep(j,0,n-1)

read(dist[i][j]);

printf("%d\n",solve());

return 0;

}

java货郎担问题求解_货郎担问题(TSP)相关推荐

  1. java货郎担问题求解_货郎担问题的四种实现方法

    { tmpPath.push_back(i); TrackBack(i,sum); tmpPath.pop_back(); } cout< PrintPath(); } /* 文件名:Node. ...

  2. JVM - 结合代码示例彻底搞懂Java内存区域_对象在堆-栈-方法区(元空间)之间的关系

    文章目录 Pre 示例demo 总体关系 代码示例论证 反汇编 Pre JVM - 结合代码示例彻底搞懂Java内存区域_线程栈 | 本地方法栈 | 程序计数器 中我们探讨了线程栈中的内部结构 ,大家 ...

  3. Java计算时间差_传统的SimpleDateFormat类

    Java计算时间差_传统的SimpleDateFormat类 SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM-dd ...

  4. JAVA异常使用_每个人都曾用过、但未必都用得好

    JAVA异常使用_每个人都曾用过.但未必都用得好 一.抛出异常 vs. 返回错误代码 有人说"Well, an exception is a goto.",但也有人言"m ...

  5. 学习笔记:Java 并发编程①_基础知识入门

    若文章内容或图片失效,请留言反馈. 部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 视频链接:https://www.bilibili.com/video/av81461839 视频下载: ...

  6. Java应用编程_常用类库汇总2(日期类正则表达式国际化程序)

    总览[Java SE] 相关文章链接 [Java应用编程_常用类库汇总1(字符串处理类&&对象克隆&数字操作类库&-)] [Java应用编程_常用类库汇总3(开发支持类 ...

  7. ## 大一java课程设计_航班查询系统(我是小白)

    大一java课程设计_航班查询系统(我是小白) 备注:第一个java程序有借鉴别人的成分,因为忘了在哪个大佬上面借鉴的,所以在此备注,如有侵权,请联系删除,(仅用于学习使用,并未想盈利) 框体介绍 一 ...

  8. 第四章Java核心类库_多线程

    第四章第五节Java核心类库_多线程 多线程 一.线程与进程 1.线程与进程 2.线程调度 二.同步与异步&并发与并行 1. 同步与异步 2. 并发与并行 三.继承Thread 1.代码块 2 ...

  9. Java趣味问答题^_^

    Java趣味问答题^_^ 1.计算下面代码的结果 public class smallT {public static void main(String args[]){SmallT t = new ...

最新文章

  1. windows2003+PHP-5.3.8+IIS6.0的安装配置
  2. 百战程序员试题与答案(仅供参考)
  3. Redis中的过期策略
  4. Redis源码编译安装
  5. __stdcall和__cdecl的区别
  6. win7 VS2013 新建工程 编译lua5.2.0 静态库
  7. PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __uns
  8. Windows编程之定时器的使用和定时销毁桌面出现的窗口,以及窗口句柄的获取
  9. .Net微服务实战之技术架构分层篇
  10. Hive SQL 分析函数
  11. 【mybatis】时间范围 处理时间格式问题
  12. 谷歌json插件_没用过这7款浏览器插件,你一定是假的程序员
  13. sudo: must be setuid root错误解决方法.
  14. HanLP Demo(学习笔记)
  15. Qt QWidget视频上叠加文字
  16. RS232与TTL电平的区别
  17. 《领导力21法则》-读书笔记
  18. 修改ubuntu的用户名密码
  19. C#写入注册表打印异常提示无法写入到注册表项
  20. 北京中医药大学计算机应用基础作业,北京中医药大学计算机应用基础第五次.doc...

热门文章

  1. 1.关于tomcat的startup.bat文件闪退,而日志文件没有任何信息
  2. android 截图模糊,Adobe XD导出图片模糊?设置错误啦(切图详解)
  3. Linux挂载群晖NFS共享文件夹
  4. Altium Designer(AD20)画PCB时ctrl键、shift键、鼠标按键的妙用
  5. UIWebView 使用
  6. JAVA版商城 spring boot商城 spring cloud商城 B2B2C商城 多用户商城 直播带货商城 新零售商城 b2b供应链 电子商务 拼团商城 分销商城 直播商城 社交电商
  7. tomcat启动:startup.sh、catalina.sh、setclasspath.sh三者关系
  8. 清理Win10系统C盘的脚本方法
  9. 吃透Java并发:AQS结构详解及其CLH变种、CLH、MCS
  10. PTA数据结构第二章线性表