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)

相关推荐

  • MySQL数据分析怎么解决

    技术MySQL数据分析怎么解决本篇内容主要讲解“MySQL数据分析怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL数据分析怎么解决”吧!作为最为流行的开源数据

    攻略 2021年12月3日
  • HTTP请求流程详解

    技术HTTP请求流程详解 HTTP请求流程详解HTTP协议是建立在TCP连接基础之上的,它是一种允许浏览器向服务器发送请求获取资源的协议,是Web的基础。通常都是由浏览器发起请求,来获取服务端的资源如H

    礼包 2021年12月3日
  • 美国服务器如何选择合适服务商

    技术美国服务器如何选择合适服务商对于博客作者和小型网站而言,为其网站提供合适的网络服务器非常重要。这是为了确保他们的网站随时能够访问。各种各样的供应商这为购买者提供了足够的灵活性来做出正确的选择。然而,如何选择合适的服务

    礼包 2021年10月26日
  • oracle数据库CPU过高问题分析

    技术oracle数据库CPU过高问题分析这篇文章主要讲解了“oracle数据库CPU过高问题分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“oracle数据库CPU过高

    攻略 2021年11月11日
  • JVM相关的知识点有哪些

    技术JVM相关的知识点有哪些这篇文章主要讲解了“JVM相关的知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JVM相关的知识点有哪些”吧!JVM作为java运行

    攻略 2021年11月6日
  • 黑色上衣配什么颜色的裤子好看,黑色的上衣搭配什么颜色的裤子

    技术黑色上衣配什么颜色的裤子好看,黑色的上衣搭配什么颜色的裤子黑色是百搭色,陪什么裤子都好看。关键是什么场合黑色上衣配什么颜色的裤子好看、什么款式。如果是正装或准正装,在不是特别正式的场合,黑色、灰色、白色、卡其色、深蓝

    生活 2021年10月21日