Witam, potrzebuję małej pomocy w kodzie. Mój program "rozwiązujący" ten problem dla 4 miast nie działa do końca tak jak się spodziewałem. Mógłby ktoś zerknąć fachowym okiem co tu trzeba poprawić?
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int cost = 0;
int graph [4][4];
int visited [4];
void takeInput ()
{
int i, j;
printf ("Give Values: \n");
for (i=0; i<4; i++)
{
for (j=0; j<4; j++)
scanf ("%d", &graph[i][j]);
}
printf ("The graph is: \n: \n");
for (i=0; i<4; i++)
{
for (j=0; j<4; j++)
printf ("%d\t", graph[i][j]);
printf ("\n");
}
}
int find_next_node(int node)
{
int nd, min=INT_MAX, min_index, democost, i;
for (i=0; i<4; i++)
{
if (!visited[i] && graph[node][i] != 0 && graph[node][i] < min)
{
democost=graph[node][i];
min = graph[node][i];
min_index=i;
}
}
nd = min_index;
cost=cost+democost;
return nd;
}
void TSP (int node)
{
int next_node;
visited[node]=1;
printf("%d->", node);
next_node = find_next_node(node);
if (next_node == INT_MAX)
{
int v=0;
cost=cost+graph[next_node][v];
printf("%d", v);
return;
}
TSP (next_node);
}
int main()
{
takeInput();
int i;
int start;
for (i=0; i<4; i++)
visited[i]=0;
printf ("Enter start node: \n");
scanf ("%d", &start);
printf ("TSP path\n");
TSP(start);
return 0;
}