畢業旅行問題

2021-09-25 19:37:36 字數 1114 閱讀 4913

這個程式設計題是來自於牛客網的位元組跳動2019春招研發部分程式設計題彙總,有感興趣的朋友們可以去原**檢視。

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

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

最小車費花銷 s

輸入

40 2 6 5

2 0 4 4

6 4 0 2

5 4 2 0

輸出13

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

狀態壓縮

從狀態壓縮的特點來看,這個演算法適用的題目符合以下的條件:

解法需要儲存一定的狀態資料(表示一種狀態的乙個資料值),每個狀態資料通常情況下是可以通過 2 進製來表示的。這就要求狀態資料的每個單元只有兩種狀態,比如說棋盤上的格仔,放棋子或者不放,或者是硬幣的正反兩面。這樣用 0 或者 1 來表示狀態資料的每個單元,而整個狀態資料就是乙個一串 0 和 1 組成的二進位制數。

解法需要將狀態資料實現為乙個基本資料型別,比如 int,long 等等,即所謂的狀態壓縮。狀態壓縮的目的一方面是縮小了資料儲存的空間,另一方面是在狀態對比和狀態整體處理時能夠提高效率。這樣就要求狀態資料中的單元個數不能太大,比如用 int 來表示乙個狀態的時候,狀態的單元個數不能超過 32(32 位的機器)。

位操作實現技巧

動態規劃

#include #include #include using namespace std;

int getans(vector> &nums)

}cout << getans(edges) << endl;

}return 0;

}

(TSP)畢業旅行問題

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

程式設計題 畢業旅行問題

時間限制 c c 1秒,其他語言2秒 空間限制 c c 32m,其他語言64m 小明目前在做乙份畢業旅行的規劃。打算從北京出發,分別去若干個城市,然後再回到北京,每個城市之間均乘坐高鐵,且每個城市只去一次。由於經費有限,希望能夠通過合理的路線安排盡可能的省一些路上的花銷。給定一組城市和每對城市之間的...

程式設計題 畢業旅行問題

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