旅行销售员的错误代码,即以最小的图表成本找到周期
error code for travelling salesperson i.e finding cycle with minimum cost of a graph
#include <stdio.h>
int a[10][10],visited[10],n,cost=0;
void mincost(int city)
{
int i,ncity; //ncity==nearest city
visited[city]=1;
printf("%d->",city+1);
ncity=least(city);
if(ncity==999) //no nearest city,hence back to 1
{
ncity=0;
printf("%d",ncity+1);
cost+=a[city][ncity];
return;
}
mincost(ncity); //recursive
}
int least(int c)
{
int i,nc=999;
int min=999,kmin;
for(i=0;i<n;i++)
{
if((a[c][i]!=0) && visited[i]==0)
{
if(a[c][i]<min)
{
min=a[i][0]+a[c][i];
kmin=a[c][i];
nc=i;
}
}
}
if(min!=999)
cost+=kmin;
return nc;
}
int main()
{
int n,i,j;
printf("Enter the number of cities:");
scanf("%d",&n);
printf("\nEnter the cost matrix:");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i=0;i<n;i++)
visited[i]=0;
printf("\nThe minimum path is:\n");
mincost(0);
printf("\nMinimum cost:%d",cost);
getch();
return 0;
}
程序为给定的图找到成本最低的循环。
函数 least 找到下一个最近的城市,由 nc 表示,每个城市通过递归调用 mincost 函数被逐一考虑。
输出总是第一个城市&它的成本,仅此而已。
请帮忙!
您有一个全局变量 n
,它被编译器初始化为零。然后在 main
函数中你有一个 local 变量 n
隐藏全局变量,所以当你从用户读取输入并初始化 n
为此,只有局部变量被初始化,全局变量仍然为零。
一般提示:避免使用全局变量。如果您需要其他函数了解某个值或变量,请将其作为参数传递。
#include <stdio.h>
int a[10][10],visited[10],n,cost=0;
void mincost(int city)
{
int i,ncity; //ncity==nearest city
visited[city]=1;
printf("%d->",city+1);
ncity=least(city);
if(ncity==999) //no nearest city,hence back to 1
{
ncity=0;
printf("%d",ncity+1);
cost+=a[city][ncity];
return;
}
mincost(ncity); //recursive
}
int least(int c)
{
int i,nc=999;
int min=999,kmin;
for(i=0;i<n;i++)
{
if((a[c][i]!=0) && visited[i]==0)
{
if(a[c][i]<min)
{
min=a[i][0]+a[c][i];
kmin=a[c][i];
nc=i;
}
}
}
if(min!=999)
cost+=kmin;
return nc;
}
int main()
{
int n,i,j;
printf("Enter the number of cities:");
scanf("%d",&n);
printf("\nEnter the cost matrix:");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i=0;i<n;i++)
visited[i]=0;
printf("\nThe minimum path is:\n");
mincost(0);
printf("\nMinimum cost:%d",cost);
getch();
return 0;
}
程序为给定的图找到成本最低的循环。 函数 least 找到下一个最近的城市,由 nc 表示,每个城市通过递归调用 mincost 函数被逐一考虑。 输出总是第一个城市&它的成本,仅此而已。 请帮忙!
您有一个全局变量 n
,它被编译器初始化为零。然后在 main
函数中你有一个 local 变量 n
隐藏全局变量,所以当你从用户读取输入并初始化 n
为此,只有局部变量被初始化,全局变量仍然为零。
一般提示:避免使用全局变量。如果您需要其他函数了解某个值或变量,请将其作为参数传递。