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)

相关推荐

  • cad图制作,怎么把cad的图弄成效果图

    技术cad图制作,怎么把cad的图弄成效果图把cad的图弄成效果图步骤如下cad图制作: 1、首先我们先在电脑端下载安装相应的CAD编辑器软件。
    2、打开运行CAD软件,点击“文件-打开”按钮,选择好我们需要处理的CA

    生活 2021年10月27日
  • 对象Temessagejs脚本的简单编写方法是什么?

    技术TE对象message js脚本简单写法是什么这篇文章将为大家详细讲解有关TE对象message js脚本简单写法是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

    攻略 2021年12月13日
  • LeetCode如何打印从1到N位数的最大值?

    技术LeetCode怎么打印从1到最大的n位数这篇文章主要介绍LeetCode怎么打印从1到最大的n位数,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!题目:输入数字n,按顺序从1打印到最大的n位十

    攻略 2021年12月15日
  • myeclipse如何快速重写方法(为什么myeclipse突然变得很慢了)

    技术如何进行MyEclipse优化速度方案的分析这篇文章给大家介绍如何进行MyEclipse优化速度方案的分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。MyEclipse优化速度方案的四大方面:

    攻略 2021年12月18日
  • flex是不是css属性

    技术flex是不是css属性这篇文章主要介绍了flex是不是css属性,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 flex

    攻略 2021年11月18日
  • CentOS 7.3上SQL Server vNext CTP 1.2如何安装

    技术CentOS 7.3上SQL Server vNext CTP 1.2如何安装这篇文章给大家分享的是有关CentOS 7.3上SQL Server vNext CTP 1.2如何安装的内容。小编觉得挺实用的,因此分享

    攻略 2021年11月15日