一、题目分析
根据高度,坐标点进行排序,然后求和
二、代码实现
#include<bits/stdc++.h>
using namespace std;
struct node{
int x;
int y;
int z;
}s[50010];
int cmp(node a ,node b){
if(a.z>b.z) return 0; //通过高度进行升序排序
else return 1;
}
int main(){
int n;
cin>>n;
double sum=0;
for(int i=0;i<n;i++){
cin>>s[i].x;
cin>>s[i].y;
cin>>s[i].z;
}
sort(s,s+n,cmp);
for(int i=1;i<n;i++){
sum=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)); //计算所有的距离
}
cout<<fixed<<setprecision(3)<<sum<<' '; //保留三位小数的写法
return 0;
}