日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

旅行商问题搜索求解

發布時間:2025/3/19 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 旅行商问题搜索求解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題描述
某售貨員要到若干城市去推銷商品,已知各城市之間的路程(旅費),他要選定一條從駐地出發,經過每個城市一遍,最后回到駐地的路線,使總的路程(總旅費)最小。
輸入
輸入第一行為一個整數n,表示圖的頂點數
輸入第二行為一個整數k,表示圖的邊數
輸入第3到k+3-1行表示邊的信息,每一行三個數,分別表示頂點i,頂點j,i到j的路徑長度a[i][j]

4
6
1 2 30
1 3 6
1 4 4
2 3 5
2 4 10
3 4 20

輸出
輸出有兩行
第一行為最優值,表示旅行商的最短路徑長度
第二行為最優解,為旅行商的頂點遍歷序列

25
1 3 2 4 1

int n;//城市的個數 double dist[N][N];//保存兩城之間的距離,即有權值得邊,得鄰接矩陣 //path :已搜索得路徑 //visited:對各城市訪問與否 //currentLength:所有已檢索路徑得長度 //在訪問得所有城市路徑中,返回最短路徑 double shortestPath(vector<int>&path,vector<bool>&visited,double currentLength){//初始化部分if(path.size() == n)return currentLength += dist[path[0]][path.back()];//還有加上把最后一個城市與第一個城市之間的距離double ret = INF;//常識所有可能得下一個訪問得城市。for(int next = 0;next <n;++next){if(visited[next])continue;int here = path.back();path.push_back(next);visited[next] = true;//利用遞歸完成剩余的路徑的檢索,并得到最短路徑的長度。double cand = shortestPath(path,visited,currentLength+dist[here][next]);ret += min(ret,cand);visited[next] = false;path.pop_back();}return ret; }

總結

以上是生活随笔為你收集整理的旅行商问题搜索求解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。