AcWing 91 最短Hamilton路径

技术AcWing 91 最短Hamilton路径 AcWing 91 最短Hamilton路径AcWing 91 最短Hamilton路径
题目描述
给定一张 n个点的带权无向图,
点从 0~n?1 标

AcWing 91最短汉密尔顿路径

AcWing 91 最短Hamilton路径

题目描述

给定一个有n个点的加权无向图,

从0到n?1、求起点0到终点n?最短的汉密尔顿路径为1。

哈密尔顿路径定义为从0到n?1每一点恰好经过一次。

输入格式

在第一行输入整数n。

接下来,每行有n行n个整数,

其中第I行中的J整数表示从点I到J的距离(表示为[i,j])。

对于任何x,y,z,

确保数据a[x,x]=0

a[x,y]=a[y,x]

和a[x,y] a[y,z]a[x,z]

输出格式

输出一个整数,表示最短汉密尔顿路径的长度。

数据范围

1n20

0a[i,j]107

输入样例:

0 2 4 5 1

2 0 6 5 3

4 6 0 8 3

5 5 8 0 5

1 3 3 5 0

输出样例:

18

解题思路

根据问题的意思,每张图片中的每一点都需要经过一次。

所以我们可以用暴力的方法把——个数字排列完整。

数的全置换方法的时间复杂度\(O(n \次n!)\)

显然,这是行不通的。

再看下面的全排列。

\(1 2 3 4 .\)

\(1 3 2 4 .\)

可以发现,这两个完整的排列已经经历了1234的四个数字。

最后都是4号。

所以修剪可以在这里判断。

使用状态来压缩数组。

\(f[i][j]\)

其中I是一个二进制数。

指示图形的状态。

1表示通过,0表示未通过。

j表示最后一点落在哪里。

还需要列举J来自哪一点。

状态转移方程为:

$ f[i][j]=min(f[i][j],f[i\wedge 1j][k] w[k][j]) $

请注意,位操作的优先级高于逻辑异或操作。

解题代码

#包含iostream

#包括内存。h

使用命名空间标准;

const int N=21

int n,w[N][N],f[1N][N];

int main(){ 0

CIN;

for(int I=0;在;(一)

for(int j=0;jn;j)

CIN w[I][j];

memset(f,0x3F,sizeof(f));//初始数组都是无限的。

f[1][0]=0;//初始起点为0。

for(int I=1;i1n一)//枚举状态

for(int j=0;jn;J) if(ij1) //j必须通过。

for(int k=0;kn;k)如果((I ^ 1J)K1)//j不等于k,k则通过。

f[i][j]=min(f[i][j],f[i^1j][k]w[k][j]);//状态转移方程

cout f[(1n)-1][n-1];

}

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/103389.html

(0)

相关推荐

  • 【P6】Verilog搭建流水线MIPS-CPU,全指令55条)

    技术【P6】Verilog搭建流水线MIPS-CPU,全指令55条) 【P6】Verilog搭建流水线MIPS-CPU(全指令55条)我开P6是过P5了吗笑死,P5又挂了,还是经典的blezalc指令,

    礼包 2021年12月16日
  • 如何配置Log日志

    技术如何配置Log日志这篇文章主要讲解了“如何配置Log日志”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何配置Log日志”吧!1.Slf4jSlf4j 的全称是 Si

    攻略 2021年10月20日
  • 如何解析Java常量池与字符串intern

    技术如何解析Java常量池与字符串intern这期内容当中小编将会给大家带来有关如何解析Java常量池与字符串intern,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在Java应用程

    攻略 2021年11月23日
  • 美国独享服务器租用特点

    技术美国独享服务器租用特点与廉价的虚拟主机不同,美国独享服务器需要单个网站或网络所有者使用服务器资源。服务器资源(如硬件、软件和操作系统)受到用户的完全控制。此外,物理服务器通常安装在数据中心内。虽然很多用户为了节省成本

    礼包 2021年11月3日
  • MySQL优化经验是怎样的

    技术MySQL优化经验是怎样的MySQL优化经验是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。MySQL优化经验同时在线访问量继续增大 对于1G

    攻略 2021年11月17日
  • 完全理解icmp协议

    技术完全理解icmp协议 完全理解icmp协议1.ICMP出现的原因
    在IP通信中,经常有数据包到达不了对方的情况。原因是,在通信途中的某处的一个路由器由于不能处理所有的数据包,就将数据包一个一个丢弃了

    礼包 2021年11月12日