求助求助,看到的大佬可以帮我看一下吗,这道题为什么先统计每个数出现的次数,然后直接遍历100个数不对呢
C++ 代码
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 110;
int a[N];
int main(){
memset(a, 0, sizeof(a));
int n, tmp;
cin >> n;
for(int i = 0; i < n; i++) {
cin >> tmp;
a[tmp]++;//统计这个数出现了多少次
}
int ans = 1e9;
for(int l = 1; l < 83; l++) {
int tmp = 0, r = l + 17;
//直接枚举100个数,因为a数组中已经存好了每个数出现的次数
for(int i = 1; i <= 100; i++){
if(a[i] != 0 && i < l) tmp += a[i] * (l - i) * (l - i);
else if(a[i] != 0 && i > r) tmp += a[i] * (i - r) * (i - r);
}
ans = min(tmp, ans);
}
cout << ans << endl;
return 0;
}