用快排全WA用冒泡80分求解,输出的样例都是对的
  • 板块P5143 攀爬者
  • 楼主cjl2580
  • 当前回复5
  • 已保存回复5
  • 发布时间2021/1/30 16:13
  • 上次更新2023/11/5 04:08:32
查看原帖
用快排全WA用冒泡80分求解,输出的样例都是对的
414510
cjl2580楼主2021/1/30 16:13
#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

2021/1/30 16:13
加载中...