下沙小麵的 2

2022-09-13 17:33:09 字數 1347 閱讀 5136

前文再續,書接上一題。話說當上小麵的司機的lele在施行他的那一套拉客法則以後,由於走的路線太長,油費又貴,不久便虧本了。(真可憐~)於是他又想了乙個拉客的辦法。

對於每一次拉客活動,他一次性把乘客都拉上車(當然也不會超過7個,因為位置只有7個)。然後,lele計算出一條路線(出於某些目的,lele只把車上乘客的目的地作為這條路線上的站點),把所有乘客都送到目的地(在這路線上不拉上其他乘客),並且使總路線長度最短。

不過lele每次都要花很多時間來想路線,你能寫個程式幫他嘛?

本題目包含多組測試。最後一組測試後有乙個0代表結束。

每組測試第一行有乙個整數ncity(3<=ncity<=30)表示下沙一共有多少個站點(站點從0開始標號)。

然後給你乙個 ncity * ncity 的矩陣,表示站點間的兩兩距離。即這個矩陣中第 i 行 第 j 列的元素表示站點 i 和站點 j 的距離。(0<=距離<=1000)

再然後有乙個整數k(1<=k<=7),表示lele拉上車的人數。

接下來的一行裡包括 k 個整數,代表上車的人分別要去的站點。(0《站點對於每一組測試,在一行內輸出乙個整數,表示最短路線的長度。

3

0 1 2

1 0 3

2 3 0

31 1 2

0

4

題意:給定n個點,n*n的二維圖,已知個點的距離。求出聯通部分點的最小的距離

題解:先用乙個陣列儲存部分點,然後對其進行深搜遍歷即可

#include

#include

int arr[32][32];

int n;

int c[32],k,cn,ma;

void dfs(int s,int cnt,int k)

int i;

if(cnt==cn)

if(kreturn;

for(i=1;iif(c[i])

c[i]=0;

dfs(i,cnt+1,k+arr[s][i]);

c[i]=1;

int main()

int i,j,m,p;

while(scanf("%d",&n)&&n)

for(i=0;ifor(j=0;jscanf("%d",&arr[i][j]);

memset(c,0,sizeof(c));

scanf("%d",&m);

cn=0;

ma=1000000;

for(i=1;i<=m;i++)

scanf("%d",&p);

if(c[p]==0)

dfs(0,0,0);

printf("%d\n",ma);

return 0;

下沙小麵的 2

前文再續,書接上一題。話說當上小麵的司機的lele在施行他的那一套拉客法則以後,由於走的路線太長,油費又貴,不久便虧本了。真可憐 於是他又想了乙個拉客的辦法。對於每一次拉客活動,他一次性把乘客都拉上車 當然也不會超過7個,因為位置只有7個 然後,lele計算出一條路線 出於某些目的,lele只把車上...

下沙小麵的 2

description 前文再續,書接上一題。話說當上小麵的司機的lele在施行他的那一套拉客法則以後,由於走的路線太長,油費又貴,不久便虧本了。真可憐 於是他又想了乙個拉客的辦法。對於每一次拉客活動,他一次性把乘客都拉上車 當然也不會超過7個,因為位置只有7個 然後,lele計算出一條路線 出於某...

HDOJ 1572 下沙小麵的 2

乙個小黑車,最多裝7個人,送往每個人要去的站點,並且中途只能在這些人的目的站點停車 然後給你乙個 ncity ncity 的矩陣,表示站點間的兩兩距離。即這個矩陣中第 i 行 第 j 列的元素表示站點 i 和站點 j 的距離。0 距離 1000 再然後有乙個整數k 1 k 7 表示lele拉上車的人...