满意答案
guiymud7891
2014.02.12
采纳率:55% 等级:12
已帮助:25976人
你看改成这样对吗?
#include
#include
int main() {
int i, j, a, array[100], temp, visit[100];
double min, start, dist[100][100];
int x[100]= { 35, 2, 61, 4, 5, 12, 71, 52, 70, 47, 4, 97, 16, 56, 32, 46,
72, 26, 11, 36, 39, 36, 17, 56, 17, 10, 25, 54, 100, 99, 46, 94,
12, 57, 32, 94, 81, 81, 63, 52, 43, 3, 53, 78, 63, 16, 93, 79, 5,
48, 100, 95, 17, 69, 6, 9, 92, 60, 98, 52, 60, 12, 53, 15, 51, 73,
42, 26, 63, 61, 92, 94, 99, 73, 44, 79, 20, 10, 31, 80, 71, 31, 91,
87, 45, 98, 20, 97, 2, 62, 85, 23, 29, 56, 61, 59, 50, 92, 86, 48 };
int
y[100]= { 70, 56, 46, 99, 5, 31, 13, 10, 28, 65, 90, 20, 22, 89,
46, 59, 72, 12, 12, 73, 71, 2, 87, 4, 18, 76, 77, 95, 5,
32, 72, 56, 53, 19, 97, 22, 27, 42, 55, 3, 3, 48, 96, 17,
75, 59, 47, 63, 8, 43, 55, 11, 38, 98, 10, 68, 8, 23, 41,
52, 37, 61, 51, 33, 75, 72, 58, 62, 91, 100, 1, 25, 71, 90,
99, 56, 54, 45, 79, 56, 6, 5, 29, 39, 42, 61, 58, 68, 41,
27, 30, 23, 83, 51, 67, 93, 84, 61, 21, 39 };
for (i=1; i<100; i++)
visit[i]=1;
min=0.0;
for (i=0; i<100; i++)
for (j=0; j<100; j++)
dist[i][j]=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
for (i=0; i<100; i++)
dist[i][i]=10000.0;
array[0]=1;
visit[0]=0;
a=0;
for (i=1; i<100; i++) {
start=dist[a][a];
for (j=0; j<100; j++) {
if (visit[j]) {
if (dist[a][j]
start=dist[a][j];
temp=j;
}
}
}
a=temp;
visit[a]=0;
array[i]=temp+1;
min=min+start;
}
for (i=0; i<100; i++)
printf("%d: %d \n", i+1, array[i]);
printf("%.2f ", min);
}
00分享举报