请帮我写一个解决这个问题的c语言程序:有一推销员,欲到n(n<=10)个城市推销产品。为了节省旅行费用,在出发前他查清了任意两个城市间的旅行费用,想找到一条旅行路线,仅经过每个城市一次,且使旅行费用最少。本问题已知城市n,和n*n的表达任意两个城市间费用的矩阵。试求最短路径及其费用;
时间: 2023-03-30 15:01:42 浏览: 101
以下是解决该问题的C语言程序:
#include <stdio.h>
#define MAX 10
int n, mincost = 9999;
int graph[MAX][MAX], visited[MAX];
void tsp(int city, int cost, int count) {
int i;
visited[city] = 1;
if (count == n) {
if (cost + graph[city][] < mincost) {
mincost = cost + graph[city][];
}
} else {
for (i = ; i < n; i++) {
if (!visited[i]) {
tsp(i, cost + graph[city][i], count + 1);
}
}
}
visited[city] = ;
}
int main() {
int i, j;
printf("请输入城市数量n:");
scanf("%d", &n);
printf("请输入城市间的旅行费用矩阵:\n");
for (i = ; i < n; i++) {
for (j = ; j < n; j++) {
scanf("%d", &graph[i][j]);
}
}
tsp(, , 1);
printf("最短路径费用为:%d\n", mincost);
return ;
}
阅读全文