java货郎担问题求解_货郎担问题(TSP)
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)相关推荐
- java货郎担问题求解_货郎担问题的四种实现方法
{ tmpPath.push_back(i); TrackBack(i,sum); tmpPath.pop_back(); } cout< PrintPath(); } /* 文件名:Node. ...
- JVM - 结合代码示例彻底搞懂Java内存区域_对象在堆-栈-方法区(元空间)之间的关系
文章目录 Pre 示例demo 总体关系 代码示例论证 反汇编 Pre JVM - 结合代码示例彻底搞懂Java内存区域_线程栈 | 本地方法栈 | 程序计数器 中我们探讨了线程栈中的内部结构 ,大家 ...
- Java计算时间差_传统的SimpleDateFormat类
Java计算时间差_传统的SimpleDateFormat类 SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM-dd ...
- JAVA异常使用_每个人都曾用过、但未必都用得好
JAVA异常使用_每个人都曾用过.但未必都用得好 一.抛出异常 vs. 返回错误代码 有人说"Well, an exception is a goto.",但也有人言"m ...
- 学习笔记:Java 并发编程①_基础知识入门
若文章内容或图片失效,请留言反馈. 部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 视频链接:https://www.bilibili.com/video/av81461839 视频下载: ...
- Java应用编程_常用类库汇总2(日期类正则表达式国际化程序)
总览[Java SE] 相关文章链接 [Java应用编程_常用类库汇总1(字符串处理类&&对象克隆&数字操作类库&-)] [Java应用编程_常用类库汇总3(开发支持类 ...
- ## 大一java课程设计_航班查询系统(我是小白)
大一java课程设计_航班查询系统(我是小白) 备注:第一个java程序有借鉴别人的成分,因为忘了在哪个大佬上面借鉴的,所以在此备注,如有侵权,请联系删除,(仅用于学习使用,并未想盈利) 框体介绍 一 ...
- 第四章Java核心类库_多线程
第四章第五节Java核心类库_多线程 多线程 一.线程与进程 1.线程与进程 2.线程调度 二.同步与异步&并发与并行 1. 同步与异步 2. 并发与并行 三.继承Thread 1.代码块 2 ...
- Java趣味问答题^_^
Java趣味问答题^_^ 1.计算下面代码的结果 public class smallT {public static void main(String args[]){SmallT t = new ...
最新文章
- windows2003+PHP-5.3.8+IIS6.0的安装配置
- 百战程序员试题与答案(仅供参考)
- Redis中的过期策略
- Redis源码编译安装
- __stdcall和__cdecl的区别
- win7 VS2013 新建工程 编译lua5.2.0 静态库
- PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __uns
- Windows编程之定时器的使用和定时销毁桌面出现的窗口,以及窗口句柄的获取
- .Net微服务实战之技术架构分层篇
- Hive SQL 分析函数
- 【mybatis】时间范围 处理时间格式问题
- 谷歌json插件_没用过这7款浏览器插件,你一定是假的程序员
- sudo: must be setuid root错误解决方法.
- HanLP Demo(学习笔记)
- Qt QWidget视频上叠加文字
- RS232与TTL电平的区别
- 《领导力21法则》-读书笔记
- 修改ubuntu的用户名密码
- C#写入注册表打印异常提示无法写入到注册表项
- 北京中医药大学计算机应用基础作业,北京中医药大学计算机应用基础第五次.doc...
热门文章
- 1.关于tomcat的startup.bat文件闪退,而日志文件没有任何信息
- android 截图模糊,Adobe XD导出图片模糊?设置错误啦(切图详解)
- Linux挂载群晖NFS共享文件夹
- Altium Designer(AD20)画PCB时ctrl键、shift键、鼠标按键的妙用
- UIWebView 使用
- JAVA版商城 spring boot商城 spring cloud商城 B2B2C商城 多用户商城 直播带货商城 新零售商城 b2b供应链 电子商务 拼团商城 分销商城 直播商城 社交电商
- tomcat启动:startup.sh、catalina.sh、setclasspath.sh三者关系
- 清理Win10系统C盘的脚本方法
- 吃透Java并发:AQS结构详解及其CLH变种、CLH、MCS
- PTA数据结构第二章线性表