好奇怪,思路一样,一个10分,一个满分
查看原帖
好奇怪,思路一样,一个10分,一个满分
1420718
nbq202412904430楼主2024/11/8 13:59
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
int compare(const void*a,const void*b)
{
	int a1=*(int*)a;
	int b1=*(int*)b;
	if(a1>b1)return 1;
	if(a1<b1)return -1;
	return 0;
}

int main()
{
    long long n,h[400],e=0;
	long long s=0;
    scanf("%d",&n);
    while(e<n)
    {
    	scanf("%d",&h[e]);
    	e++;
	}
	
	qsort(h,n,sizeof(int),compare);
	if(n!=0)s=h[n-1]*h[n-1];
	int k=0;
	for(int i=0,j=n-1;i<=j;i++)
	{
		if(i==j)
		{
			if(k!=0)s+=(h[j]-k)*(h[j]-k);
			break;
		}
		s+=(h[j]-h[i])*(h[j]-h[i]);
		j--;
		k=h[i];
		
	}
	printf("%lld",s);
	return 0;
} 

还有这个

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
int compare(const void*a,const void*b)
{
	int a1=*(int*)a;
	int b1=*(int*)b;
	if(a1>b1)return 1;
	if(a1<b1)return -1;
	return 0;
}

int main()
{
    int n,h[400],e=1;
	long long s=0;
    scanf("%d",&n);
    h[0]=0;
    while(e<=n)
    {
    	scanf("%d",&h[e]);
    	e++;
	}
	
	qsort(h,n+1,sizeof(int),compare);
	int k=0;
	for(int i=0,j=n;i<j;)
	{
		s+=pow(h[i]-h[j],2);
		i++;
		if(i==j)break;
		s+=pow(h[i]-h[j],2);
		j--;
		
	}
	printf("%lld",s);
	return 0;
} 

这两个思路是一样的,为什么一个是10分,一个可以过

2024/11/8 13:59
加载中...