/*旅行售货员问题回溯法*/
#include<stdio.h>
#define N 4
int cc,//当前路径费用
bestc;//当前最优解费用
int a[N+1][N+1];//邻接矩阵,存放图的信息
int bestx[N+1];//当前最优解
int x[N+1];//当前解
void inputAjac()
{
int i,j;
printf("输入大于0的值表示有边,小于0表示无边:\n");
for(i=1;i<=N;i++)
{
for(j=i+1;j<=N;j++)
{
printf("请输入第%d个城市到第%d个城市所需路费为:",i,j);
scanf("%d",&a[i][j]);
a[j][i]=a[i][j];
}
}
}
void backtrack(int i)
{
if(i==N)
{
if(a[x[N-1]][x[N]]>0&&a[x[N]][x[1]]>0)
{
if(bestc<0||bestc>cc+a[x[N-1]][x[N]]+a[x[N]][x[1]])
{
int j;
for(j=1;j<=N;j++)
{
bestx[j]=x[j];
bestc=cc+a[x[N-1]][x[N]]+a[x[N]][x[1]];
}
}
}
}
else
{
int j;
fo
旅行售货商问题 -- 回溯法
最新推荐文章于 2024-06-01 16:05:34 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)