资源简介

某推销员要从城市v1出发,访问其它城市v2,v3,…,v6各一次且仅一次,最后返回v1。D为各城市间的距离矩阵。 问:该推销员应如何选择路线,才能使总的行程最短?

资源截图

代码片段和文件信息

//
//  main.cpp
//  DP_TSP_recur
//
//  Created by yunglynn on 12-11-23.
//  Copyright (c) 2012年 yunglynn. All rights reserved.
//

#include 
using namespace std;
#define MAX 6

typedef struct _node_st
{
    bool inPath;
    int nextIndex;
    _node_st():inPath(false)nextIndex(-1){};
}Node*NodePtr;

void printPath(Node* node);
int tsp(int beginIndexint endIndex);

int dis[MAX][MAX]={
    0 10 20 30 40 50
    12 0 18 30 25 21
    23 19 0 5 10 15
    34 32 4 0 8 16
    45 27 11 10 0 18
    56 22 16 20 12 0
};

Node p[MAX];
Node record[MAX - 1][MAX];
int flag = 0;

int main()
{
    p[0].inPath = true;
    int res = tsp(0 0);
    printPath(record[flag]);
    cout << res << endl;
    return 0;
}

//表示从begin开始经过所有点后到达end的最小距离
int tsp(int beginIndexint endIndex)
{
    int result = 0xFFFFFFF;
    bool isLast = true;
    int k = 0;
    for(int i = 0; i < MAX; i ++)
    {
        if(i != beginIndex)
        {
            if(!p[i].inPath)
            {
          

评论

共有 条评论