#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int n, i, j, u, v, min, edgecount = 0, tsplength = 0;
cout << "頂點個數:";
cin >> n;
int *flag = new int[n];
for (int i = 0; i < n; i++)
flag[i] = 0;
int **arc = new int*[n];
for (int i = 0; i < n; i++)
{
arc[i] = new int[n];
}
//輸入圖的代價矩陣
cout << "請以矩陣形式輸入頂點之間的距離" << endl;
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
cin >> arc[i][j];
//糾正用戶輸入的數據
for (i = 0; i < n; i++)
arc[i][i] = -1;
cout << "您輸入的頂點之間的距離如下" << endl;
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
cout << setw(3) << arc[i][j];
cout << endl;
}
flag[0] = 1;
u = 0;
cout << "最短路徑爲:" << endl;
cout << "0-->";
while (edgecount < n-1)
{
min = 100;
for (j = 0; j < n; j++)
{
if ((flag[j] == 0) && (arc[u][j] != -1) && (arc[u][j] < min))
{
v = j;
min = arc[u][j];
//cout << min;
}
}
tsplength += arc[u][v];
flag[v] = 1;
edgecount++;
cout << v << "-->";
u = v;
}
tsplength += arc[u][0];
cout << "0" << endl;
cout << "最短路徑長度爲:" << tsplength << endl;
return 0;
}
貪心法求解TSP問題
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.