科大讯飞提前批

三道编程题
1.最小二乘法给出多个点,求一条拟合最好的直线,求出y=kX+b
求出k,b
int main()
{
int num;
cin>>num;
float arr[num][2];
//float arr[N][2];
for(int i=0;i<num;i++)
{
for(int j=0;j<2;j++)
{
scanf("%f",&arr[i][j]);
}
}
//cout<<"测试"<<arr[2][0]<<"    "<<arr[3][1];
float x_sum=0,y_sum=0;
float x_ave=0,y_ave=0;
for(int i=0;i<num;i++)
{
x_sum+=arr[i][0];
}
for(int i=0;i<num;i++)
{
y_sum+=arr[i][1];
}
x_ave=x_sum/num;
y_ave=y_sum/num;
//cout<<x_ave<<"    "<<y_ave;
float temp1=0,temp2=0;//temp3=0,temp4=0;
for(int i=0;i<num;i++)
{
temp1+=(arr[i][1]*arr[i][0]-x_ave*y_ave);
}

for(int i=0;i<num;i++)
{
temp2+=(arr[i][0]*arr[i][0]-x_ave*x_ave);
}


float b=(temp1)/(temp2);
float a=(y_ave-b*x_ave);
//cout<<b<<a;
printf("%.3f,%.3f",b,a);

}
2.公司很多个同事,需要坐船出去游玩,每个船有相应的载重量,每个人的体重都不会超过船的载重量,一个船最多只能做两个人求最少需要多少个船
int main()
{
int N,weight;
cin>>N>>weight;
int arr[N];
for(int i=0;i<N;i++)
{
cin>>arr[i];
}
sort(arr,arr+N);
int left=0;
int right=N-1;
int zhongzhi=weight/2;
int result=N;
while((left<right)&&arr[left]<zhongzhi )
{
if(arr[left]+arr[right]<=weight)
{
left++;
right--;
result--;
}
if(arr[left]+arr[right]>weight)
{
right--;
}
}
cout<<result<<endl;
}


#笔试题目##科大讯飞#
全部评论
这是正式批吧老哥😂
点赞 回复 分享
发布于 2020-08-17 09:55
这是面试的时候问的题吗?
点赞 回复 分享
发布于 2020-09-01 16:10

相关推荐

牛舌:如果我不想去,不管对方给了多少,我一般都会说你们给得太低了。这样他们就会给下一个offer的人更高的薪资了。
点赞 评论 收藏
分享
1 1 评论
分享
牛客网
牛客企业服务