#include <bits/stdc++.h>
using namespace std;
long long n,h[500],ans,point=1;
//开数组,不解释
int main(){
cin >> n;
for(int i=1;i<=n;i++)cin >> h[i];
sort(h,h+n+1);//排升序
int l=0,r=n;//初始化两个游标
while(r>l){ //如果游标相等或者左边的游标更小那就退出
ans+=pow(h[r]-h[l],2);//计算跳一次后增加消耗的体力值
l++;
ans+=pow(h[l]-h[r],2);
r--;//循环一次之后发现,回到了原来的样子,不过问题规模缩小了,要考虑的n少了两个
}
cout << ans;
return 0;
}
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
namespace co7{
int dis(int a,int b){
return (a-b)*(a-b);
}
}
int main(){
int n,h[314],ans=0;
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&h[i]);
sort(h+1,h+n+1);
int i=1,j=n;
while(j>i){
ans+=co7::dis(h[i],h[j]);
++i;
ans+=co7::dis(h[i],h[j]);
--j;
}
cout<<ans<<endl;
return 0;
}
上面是题解,下面是我的代码。
数据范围检查过没有问题, while 那一段中间的函数也没有问题,求助。
看两节课了还没看出来……眼睛已经瞎了