洛谷 P1171 售貨員的難題

2022-03-01 17:35:17 字數 689 閱讀 5944

經典的旅行商問題

dp[i][j]表示從j出發,去遍歷狀態為i的點,並且回到起點的最短路徑長度

初始化:dp[0][i]=dis(i,起點),即從點i哪兒哪兒也不遍歷,直接回到起點的路徑長度

對於每乙個狀態i,列舉要從哪個點出發,去遍歷這個狀態

然後列舉這個點要直接前往的狀態中的某個點

最後輸出dp[總狀態-起點狀態][起點] (從起點出發,遍歷除起點外所有點,再回到起點)

#include#include

using

namespace

std;

#define n 21

int dis[n][n],dp[1

資料有更改

某鄉有nnn個村莊(11村莊數nnn和各村之間的路程(均是整數)。

最短的路程。

輸入 #1

3

0 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...