三道编程题
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);
}
{
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;
}
{
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;
}
全部评论
(2) 回帖