原创作品,转载请指明出处,谢谢!
#include <iostream>
#include <stdio.h>
#include <vector>
using namespace std;
struct Rab {
int num;
vector <float> age;
vector <float>value;
float age_avg,value_avg;
void init() {
for (int i=0; i<num; i++) {
age_avg+=age[i];
value_avg+=value[i];
}
age_avg = 1.0*age_avg/num;
value_avg=1.0*value_avg/num;
}
float calc() {
float age_std=0.0,value_std=0.0,sum=0.0;
for(int i=0; i<num; i++) {
age_std+=((age[i]-age_avg)*(age[i]-age_avg));
value_std+=((value[i]-value_avg)*(value[i]-value_avg));
sum+=((age[i]-age_avg)*(value[i]-value_avg));
}
age_std=age_std/(1.0*num);
value_std=value_std/(1.0*num);
sum=sum/(1.0*num);
return sum/(age_std*value_std);
}
} R;
int main()
{
freopen("in.txt","r",stdin);
scanf("%d",&R.num);
float age_tmp,value_tmp;
for(int i=0; i<R.num; i++) {
scanf("%f%f",&age_tmp,&value_tmp);
R.age.push_back(age_tmp);
R.value.push_back(value_tmp);
}
R.init();
printf("%f\n",R.calc());
return 0;
}
#include <iostream>
#include <stdio.h>
#include <vector>
using namespace std;
struct Rab {
int num;
vector <float> age;
vector <float>value;
float age_avg,value_avg;
void init() {
for (int i=0; i<num; i++) {
age_avg+=age[i];
value_avg+=value[i];
}
age_avg = 1.0*age_avg/num;
value_avg=1.0*value_avg/num;
}
float calc() {
float age_std=0.0,value_std=0.0,sum=0.0;
for(int i=0; i<num; i++) {
age_std+=((age[i]-age_avg)*(age[i]-age_avg));
value_std+=((value[i]-value_avg)*(value[i]-value_avg));
sum+=((age[i]-age_avg)*(value[i]-value_avg));
}
age_std=age_std/(1.0*num);
value_std=value_std/(1.0*num);
sum=sum/(1.0*num);
return sum/(age_std*value_std);
}
} R;
int main()
{
freopen("in.txt","r",stdin);
scanf("%d",&R.num);
float age_tmp,value_tmp;
for(int i=0; i<R.num; i++) {
scanf("%f%f",&age_tmp,&value_tmp);
R.age.push_back(age_tmp);
R.value.push_back(value_tmp);
}
R.init();
printf("%f\n",R.calc());
return 0;
}
这个代码中间可能有点问题,太简单了我也没有查,大家看看做个参考吧!
下面给出测试数据:
18
23 9.5
23 26.5
27 7.8
27 17.8
39 31.4
41 25.9
47 27.4
49 27.2
50 31.2
52 34.6
54 42.5
54 28.8
56 33.4
57 30.2
58 34.1
58 32.9
60 41.2
61 35.7