程式設計題 畢業旅行問題

2021-10-05 08:51:13 字數 1540 閱讀 5342

時間限制:c/c++ 1秒,其他語言2秒

空間限制:c/c++ 32m,其他語言64m

小明目前在做乙份畢業旅行的規劃。打算從北京出發,分別去若干個城市,然後再回到北京,每個城市之間均乘坐高鐵,且每個城市只去一次。由於經費有限,希望能夠通過合理的路線安排盡可能的省一些路上的花銷。給定一組城市和每對城市之間的火車票的價錢,找到每個城市只訪問一次並返回起點的最小車費花銷。

輸入描述:

城市個數n(1城市間的車票價錢 n行n列的矩陣 m[n][n]

輸出描述:

最小車費花銷 s

輸入例子1:

40 2 6 5

2 0 4 4

6 4 0 2

5 4 2 0

輸出例子1:

13例子說明1:

共 4 個城市,城市 1 和城市 1 的車費為0,城市 1 和城市 2 之間的車費為 2,城市 1 和城市 3 之間的車費為 6,城市 1 和城市 4 之間的車費為 5,依次類推。假設任意兩個城市之間均有單程票可購買,且票價在1000元以內,無需考慮極端情況。

ac**:狀態壓縮dp

#include

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

#define for(i,a,b) for(int i=(a);i<=(b);i++)

const

int maxn =

1e4+2;

const

long

long mod =

99997867

;typedef

long

long ll;

intmain()

}for

(int i=

0;i)for

(int j=

0;j)scanf

("%d"

,&dis[i]

[j])

;for

(int i=

1;i)for

(int i=

1;i<=jh;i++

)的距離小於j到集合i的距離,則更新dp值

if(dp[j]

[i]>

(dp[k]

[i ^(1

<<

(k-1))

]+ dis[j]

[k])

) dp[j]

[i]= dp[k]

[i ^(1

<<

(k-1))

]+ dis[j]

[k];}}

}}}printf

("%d"

,dp[0]

[jh]);

//從0出發訪問所有城市(包括起點城市0)一次的最小距離

return0;

}

程式設計題 畢業旅行問題

程式設計題 畢業旅行問題 小明目前在做乙份畢業旅行的規劃。打算從北京出發,分別去若干個城市,然後再回到北京,每個城市之間均乘坐高鐵,且每個城市只去一次。由於經費有限,希望能夠通過合理的路線安排盡可能的省一些路上的花銷。給定一組城市和每對城市之間的火車票的價錢,找到每個城市只訪問一次並返回起點的最小車...

畢業旅行問題

這個程式設計題是來自於牛客網的位元組跳動2019春招研發部分程式設計題彙總,有感興趣的朋友們可以去原 檢視。小明目前在做乙份畢業旅行的規劃。打算從北京出發,分別去若干個城市,然後再回到北京,每個城市之間均乘坐高鐵,且每個城市只去一次。由於經費有限,希望能夠通過合理的路線安排盡可能的省一些路上的花銷。...

(TSP)畢業旅行問題

小明目前在做乙份畢業旅行的規劃。打算從北京出發,分別去若干個城市,然後再回到北京,每個城市之間均乘坐高鐵,且每個城市只去一次。由於經費有限,希望能夠通過合理的路線安排盡可能的省一些路上的花銷。給定一組城市和每對城市之間的火車票的價錢,找到每個城市只訪問一次並返回起點的最小車費花銷。輸入描述 城市個數...