给12个坐标走完所有坐标回到起点的最短路径
大神看看哪里出错了
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<time.h>
#define n 12
int juli[n][n];//两点之间距离
void init()
{
int x[] = { 0,10,11,12,13,14,15,16,15,11,12,13};
int y[] = { 0,10,8,11,6,9,2,-1,-3,-7,-5,-9};
for (int i=0;i<n-1;i++)
{
juli[i][i]=0;
for (int j=i+1;j<n;j++)
{
double dis = sqrt(pow((double)x[i] - x[j], 2) + pow((double)y[i] - y[j], 2));
int disInt = (int)dis;
juli[i][j] = dis == disInt ? disInt : disInt + 1;
juli[j][i] = juli[i][j];
}
}
juli[n - 1][n - 1] = 0;
}
void sum()
{
int sum=0;//总路程
int current = 0;
//判断风机是否被访问,访问为1,未访问为0
bool Fang[n] = { false };
Fang[0] = 1;
printf("无人机路径为:%d ->", 1);
for (int i = 1; i < n; i++)
{
int bijiao = 99999999;//设置一个较大的值来作为比较对象
int temp;
for (int j = 1; j < n; j++)
{
if (!Fang[j] && juli[current][j] <bijiao)
{
bijiao = juli[current][j];
temp = j;
}
}
Fang[temp] = 1;
current = temp;
sum =sum+ bijiao;
printf(" %d ->", temp + 1);
}
sum += juli[current][0];
printf(" %d\n", 1);
printf("无人机飞行总距离为:%d\n", sum);
}
int main()
{
init();
sum();
return 0;
}