經典的旅行商問題
dp[i][j]表示從j出發,去遍歷狀態為i的點,並且回到起點的最短路徑長度
初始化:dp[0][i]=dis(i,起點),即從點i哪兒哪兒也不遍歷,直接回到起點的路徑長度
對於每乙個狀態i,列舉要從哪個點出發,去遍歷這個狀態
然後列舉這個點要直接前往的狀態中的某個點
最後輸出dp[總狀態-起點狀態][起點] (從起點出發,遍歷除起點外所有點,再回到起點)
#include#includeusing
namespace
std;
#define n 21
int dis[n][n],dp[1
資料有更改
某鄉有nnn個村莊(11村莊數nnn和各村之間的路程(均是整數)。
最短的路程。
輸入 #1
30 2 1
1 0 2
2 1 0
輸出 #1
3
輸入解釋
333
0210 2 1 021
1021 0 2102
2102 1 0 210
P1171 售貨員的難題
資料有更改 某鄉有n個村莊 11輸入格式 村莊數n和各村之間的路程 均是整數 輸出格式 最短的路程。輸入樣例 1 3 0 2 1 1 0 2 2 1 0 輸出樣例 1 3 輸入解釋 3 0 2 1 1 0 2 2 1 0 solution 法一 經典的狀壓dp題目。設f i j 表示某個狀態的最短距...
P1171 售貨員的難題
題目描述 某鄉有nn個村莊 1 1 all 1 路徑總長度最小 除錯日誌 又把 1 i 1 寫成了 1 num 1 小插曲 卡空間卡到阿蘇發稿地方od撒龍捲風no,然後這題常規做法只能開 o 過 經典狀壓dp dp i j 表示 i 狀態下最後乙個點走 j 的最短路徑長度 轉移見 include i...
洛谷P1171 售貨員的難題 Tsp問題
洛谷p1171 售貨員的難題 狀壓dp 1 include 2 define for i,j,k for int i j i k i 3 define min a,b a b a b 4using namespace std 56 const int n 21,inf 1e8 7int n,mi,a...