打√的是可以不借用数组,打×的是必须借用数组
有争议的应该就是第五个,求方差,我在网上搜了几个说的都是必须借用数组,如
以方差为例,方差的计算主要分为两步,第一步,通过读取输入数据获得平均值,第二步,通过方差公式求解方差,方差公式要用到已输入数据X和均值μ,即第二步依赖于第一步获取的平均值信息和输入数据信息。平均值可以在完第一步之后即时获得,然而在不利用数组存储的情况下,输入数据在输入下一个数据时就已经丢失了。
————————————————
版权声明:本文为CSDN博主「YeeM1ng」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_31509305/article/details/88778370
可以将方差公式推导一下:
将
带入得
可见最后结果需要 、 、 三个量,完全可以不借助数组且只读一遍
C++
#include <cstdio>
int n, s1, s2, a;
// s1为 \sum a_i
// s2为 \sum a_i^2
int main() {
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
scanf("%d", &a);
s1 += a, s2 += a * a;
}
float rus = (float)(n * s2 - s1 * s1) / (n * n);
printf("%.2f", rus);
return 0;
}
Python
s1, s2 = 0, 0
n = int(input())
for i in range(n):
a = int(input())
s1 += a
s2 += a ** 2
print((n * s2 - s1 * s1) / (n * n))