#include <stdio.h>
#include <math.h>
struct pa{
double x,y,z;
}s[50001],temp;
void quicksort(int left,int right)
{
int i=left,j=right;
double t=s[left].z;
if(left>=right)
return;
while(i!=j){
while(s[j].z>=t&&j>i) j--;
while(s[i].z<=t&&j>i) i++;
if(i!=j){
temp=s[i];
s[i]=s[j];
s[j]=s[i];
}
}
temp=s[i];
s[i]=s[left];
s[left]=temp;
quicksort(left,i-1);
quicksort(i+1,right);
}
int main()
{
int n;
double sum=0;
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%lf %lf %lf",&s[i].x,&s[i].y,&s[i].z);
quicksort(0,n-1);
for(int i=1;i<n;i++){
sum+=sqrt(pow(s[i].x-s[i-1].x,2)+pow(s[i].y-s[i-1].y,2)+pow(s[i].z-s[i-1].z,2));
}
printf("%.3f",sum);
return 0;
}
这是用快排的代码,全WA
#include <stdio.h>
#include <math.h>
struct pa{
double x,y,z;
};
int main()
{
struct pa s[50000],temp;
int n;
double sum=0;
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%lf %lf %lf",&s[i].x,&s[i].y,&s[i].z);
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
if(s[i].z>s[j].z){
temp=s[i];
s[i]=s[j];
s[j]=temp;
}
for(int i=1;i<n;i++){
sum+=sqrt(pow(s[i].x-s[i-1].x,2)+pow(s[i].y-s[i-1].y,2)+pow(s[i].z-s[i-1].z,2));
}
printf("%.3f",sum);
return 0;
}
这是用冒泡的方法80分
想知道为什么快排全WA