-
Notifications
You must be signed in to change notification settings - Fork 10
/
TravellingSalesmanProblem.cpp
72 lines (59 loc) · 1.03 KB
/
TravellingSalesmanProblem.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# include <stdio.h>
int nodes[4]={0,0,0,0};
int values[4][4]={{0,16,11,6},{8,0,13,16},{4,7,0,9},{5,12,2,0}};
int cost=0;
int tsp(int);
void min_cost(int);
void min_cost(int city)
{
int nearest;
nodes[city]=1;
printf("%d ",city+1);
nearest=tsp(city);
if(nearest==999)
{
nearest=0;
printf("%d ",nearest+1);
cost+=values[city][nearest];
return;
}
min_cost(nearest);
}
int tsp(int c)
{
int nearest=999;
int min=999,temp;
for(int count=0;count<4;count++)
{
if((values[c][count]!=0) && (nodes[count]==0))
{
if(values[c][count]<min)
{
min=values[count][0]+values[c][count];
}
temp=values[c][count];
nearest=count;
}
}
if(min!=999)
{
cost+=temp;
}
return nearest;
}
int main()
{
printf("Travelling Salesman Problem (Greedy Algorithm)\n\n");
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
printf("%d ",values[i][j]);
}
printf("\n");
}
printf("\n\nPath: ");
min_cost(0);
printf("\nCost: %d",cost);
return 0;
}