动态规划特训:旅行商问题(回溯法或记忆搜索法)

发布时间:2024-11-12 05:26

解题思路:可以设定一个集合s表示还未访问的城市,i表示现在所在的城市,状态转移至任一还未访问的城市,转移方程为:dp[i][s]=min(dis[i][j]+dp[j][s^1<<j]);而回溯法比较直观,这里直接给出代码。

题目大意:有n个城市,两两之间均有道路直接相连。给出所有道路的长度(矩阵形式)。求一条经过每个城市一次且仅一次,最后回到起点的路线,使得经过的道路总长度最短。N<=15,城市编号为1-n。

输入:

4

0 3 6 7

5 0 2 3

6 4 0 2

3 7 5 0

4

0 8 5 6

6 0 8 5

7 9 0 5

9 7 8 0

输出:

10

23

记忆搜索法:

#include<cstdio>

#include<cstring>

#include<iostream>

#include<algorithm>

using namespace std;

#define inf 1<<30

int dp[21][1<<21],n,dis[21][21];

int f(int nowp,int s)

{

if(s==1) //这里不是0!集合所有数都去掉后为1!!因为集合编号从1开始,而非从0

{

if(nowp==1) //回到1为需要的终点

return 0;

else return inf; //否则返回无穷被丢弃

}

for(int i=1;i<=n;i++)

{

if(s&

网址:动态规划特训:旅行商问题(回溯法或记忆搜索法) https://www.yuejiaxmz.com/news/view/46264

相关内容

一起探索旅游景点、行程规划、住宿选择和旅行必备物品,让旅行更轻松愉快!
溯源海外好物,抖音电商金产地海外计划 x 抖音电商全球购美国首站收官
10个好用的旅游规划软件,旅行达人必备!
情侣去桂林旅游自由行线路攻略,行程规划推荐
如何提高记忆力:7种自然(高效)的方法
思维导图高效学习法,提升记忆能力的有效途径
世界公认最好的学习法,提高学习效率记忆力,收藏起来活学活用
会玩儿的年轻人,已经开发出10种旅行新方式了
搜狗图片搜索
闺蜜旅游攻略:更佳旅行目的地、行程规划、住宿和活动推荐

随便看看