91. 最短Hamilton路径状压DP
Posted 辉小歌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了91. 最短Hamilton路径状压DP相关的知识,希望对你有一定的参考价值。
f[i][j]] 表示走了i状态 且最终点是j的最短路径
#include<bits/stdc++.h>
using namespace std;
const int N=20;
int f[1<<N][20],a[N][N],n;
int main(void)
cin>>n;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
cin>>a[i][j];
memset(f,0x3f,sizeof f);
f[1][0]=0;//初始在起点
for(int i=0;i<(1<<n);i++)
for(int j=0;j<n;j++)
if(i>>j&1)//有终点j
for(int k=0;k<n;k++)
int temp=i-(1<<j);
if(temp>>k&1) f[i][j]=min(f[i][j],f[i-(1<<j)][k]+a[k][j]);
//有中间点k
cout<<f[(1<<n)-1][n-1];
return 0;
以上是关于91. 最短Hamilton路径状压DP的主要内容,如果未能解决你的问题,请参考以下文章