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