哭了,找不到为什么错了(蹲一个大佬)
  • 板块P5143 攀爬者
  • 楼主cwh1769
  • 当前回复5
  • 已保存回复5
  • 发布时间2020/9/13 12:36
  • 上次更新2023/11/5 13:16:54
查看原帖
哭了,找不到为什么错了(蹲一个大佬)
382911
cwh1769楼主2020/9/13 12:36
#include<iostream>
#include<iomanip>
#include<math.h>
using namespace std;
struct stu
{
	int x;int y;int z;
};
void fun(stu *a,int left,int right)//先排好序
{
	stu key=a[left];
	int i=left,j=right;
	while(i<j)
	{
		while(i<j&&a[j].z>=key.z)j--;
		while(i<j&&a[i].z<key.z)i++;
		if(i<j)
		{
			swap(a[i].x,a[j].x);
			swap(a[i].y,a[j].y);
			swap(a[i].z,a[j].z);
		}
	}
	if(i==j)
	{
            swap(a[left].z,a[i].z);
			swap(a[left].y,a[i].y);
			swap(a[left].z,a[i].z); 
	}
	if(i<right)
		fun(a,i+1,right);
	if(left<i)
		fun(a,left,i-1);
}
void fun1(stu *a,int n)//计算总高度
{
	double sum=0;
	for(int i=0;i<n;i++)
	{
		double t=(a[i+1].x-a[i].x)*(a[i+1].x-a[i].x)+(a[i+1].y-a[i].y)*(a[i+1].y-a[i].y)+(a[i+1].z-a[i].z)*(a[i+1].z-a[i].z);
		sum=sum+sqrt(t);
	}
	cout<<fixed<<setprecision(3)<<sum<<endl;
}
int main()
{
	stu a[50000];
	int n,j;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>a[i].x>>a[i].y>>a[i].z;
	}
	fun(a,0,n-1);
	fun1(a,n-1);
	return 0;
}
2020/9/13 12:36
加载中...