鏈€鐭璈amilton璺緞
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了鏈€鐭璈amilton璺緞相关的知识,希望对你有一定的参考价值。
鏍囩锛?a href='http://www.mamicode.com/so/1/%e7%8a%b6%e6%80%81%e5%8e%8b%e7%bc%a9dp' title='鐘舵€佸帇缂ヾp'>鐘舵€佸帇缂ヾp
std 鍩虹 ide inf data opened棰樼洰鎻忚堪
缁欏畾涓€寮?n(n鈮?0) 涓偣鐨勫甫鏉冩棤鍚戝浘锛岀偣浠?0~n-1 鏍囧彿锛屾眰璧风偣 0 鍒扮粓鐐?n-1 鐨勬渶鐭璈amilton璺緞銆?Hamilton璺緞鐨勫畾涔夋槸浠?0 鍒?n-1 涓嶉噸涓嶆紡鍦扮粡杩囨瘡涓偣鎭板ソ涓€娆°€?/div>
杈撳叆
绗竴琛屼竴涓暣鏁皀銆?br>
鎺ヤ笅鏉琛屾瘡琛宯涓暣鏁帮紝鍏朵腑绗琲琛岀j涓暣鏁拌〃绀虹偣i鍒癹鐨勮窛绂伙紙涓€涓笉瓒呰繃10^7鐨勬鏁存暟锛岃涓篴[i,j]锛夈€?br>
瀵逛簬浠绘剰鐨剎,y,z锛屾暟鎹繚璇?a[x,x]=0锛宎[x,y]=a[y,x] 骞朵笖 a[x,y]+a[y,z]>=a[x,z]銆?br>
杈撳嚭
涓€涓暣鏁帮紝琛ㄧず鏈€鐭璈amilton璺緞鐨勯暱搴︺€?/div>
鏍蜂緥杈撳叆
4
0 2 1 3
2 0 2 1
1 2 0 1
3 1 1 0
鏍蜂緥杈撳嚭
4
鎻愮ず
浠?鍒?鐨凥amilton璺緞鏈変袱鏉★紝0-1-2-3鍜?-2-1-3銆傚墠鑰呯殑闀垮害涓?+2+1=5锛屽悗鑰呯殑闀垮害涓?+2+1=4
鍩虹鐨勭姸鎬佸帇缂〥P
姣忎釜鐐规湁涓ょ鐘舵€侊紝鍙互鏀惧拰涓嶅彲浠ユ斁锛屽彲浠ユ斁鐗х敤1琛ㄧず锛屽惁鍒欑敤0琛ㄧず銆?/div>
銆愮姸鎬併€戙€愪綅缃€?/div>
View Code
鎵€浠ュ叡鏈?5绉嶇姸鎬?浠?鍑哄彂锛屾墍浠ュ垵濮嬫槸dp[i][j]=mapp[0][j];
鐘舵€佽浆绉伙細dp[i][j]=min(dp[i][j],dp[i-temp][k]+mapp[k][j]);
#include <bits/stdc++.h> using namespace std; typedef long long ll; int mapp[25][25]; int dp[1<<20][25]; const int inf=1e9; int main(){ ios::sync_with_stdio(false); int n; cin>>n; for(int i=0;i<n;i++){ for(int j=0;j<n;j++) cin>>mapp[i][j]; } int sum=(1<<n)-1; for(int i=1;i<=sum;i++){ for(int j=0;j<n;j++){ int temp=(1<<j); if(i&temp){ if(i==temp){ dp[i][j]=mapp[0][j]; } else{ dp[i][j]=inf; for(int k=0;k<n;k++){ if(i&(1<<k)&&j!=k) dp[i][j]=min(dp[i][j],dp[i-temp][k]+mapp[k][j]); } } } } } cout<<dp[sum][n-1]<<endl; return 0; }
以上是关于鏈€鐭璈amilton璺緞的主要内容,如果未能解决你的问题,请参考以下文章