题解 | 牛牛的数组匹配
牛牛的数组匹配
https://www.nowcoder.com/practice/3d3406f4a7eb4346b025cc592be5b875
#include <stdio.h> //标准输入输出函数头文件
#include <stdlib.h>
#include <math.h>
int main()
{
int n,m; //定义整型变量,保存用户输入的信息
//输入
scanf("%d %d",&n,&m);
//为指针分配相应的内存
int* a=(int*)malloc(n*sizeof(int));
int* b=(int*)malloc(m*sizeof(int));
//利用for循环输入
int sum=0; //定义整型变量,保存数组a之和
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
sum+=a[i];
}
for(int i=0;i<m;i++)
{
scanf("%d",&b[i]);
}
//定义整型变量,保存最小的差值
int min=sum;
//定义整型变量,保存子数组的下标
int left=0,right=0;
//利用for循环遍历子数组
for(int i=0;i<m;i++)
{
int num=0;
for(int j=i;j<m;j++)
{
num+=b[j];
//根据差值的大小寻找目标的子数组,并记录子数组的下标,同时考虑差值相等的情况需要取靠左的子数组
if(abs(num-sum)<min||abs(num-sum)==num&&i<left)
{
min=abs(num-sum);
left=i;
right=j;
}
}
}
//输出
for(int i=left;i<=right;i++)
{
printf("%d ",b[i]);
}
//释放内存
free(a);
free(b);
return 0;
}
查看13道真题和解析