递归+贪心+回溯解决TSP问题

旅行商问题(TSP)是一个经典的数学问题,目标是找到访问每个城市一次并返回起点的最短路径。本文通过递归和回溯方法,结合贪心策略,探索所有可能的路径来寻找最优解。测试样例展示了算法的运行效果,其时间复杂度为O(N^2),空间复杂度同样为O(N^2)。
摘要由CSDN通过智能技术生成

旅行商问题,即TSP问题(Traveling Salesman Problem)又译为旅行推销员问题、货郎担问题,是数学领域中著名问题之一。假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求得的路径路程为所有路径之中的最小值。 ——————百度百科

#include<iostream>
#include<algorithm>
#define MAX 20
using  namespace std;
int n;                              //城市的个数。 
int city_distance[MAX][MAX];       //城市间的距离矩阵。 
int current_steps[MAX];           //当前路线。 
int best_route[MAX]  = {
   0};      //最佳路线。 
long shortest_path = 0xffff;    //最短路径长度,起始值为一个相对大的数。 
int current_distance = 0;      //当前累加起来的路径长。 
void backpack(int t=2){
   
     if(t>n){
   //
        if((city_distance[cur
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是牛大春呀

老板糊涂啊

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值