题解 | #牛牛的数组匹配#
牛牛的数组匹配
https://www.nowcoder.com/practice/3d3406f4a7eb4346b025cc592be5b875
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int main() {
int a, b,suma=0;
scanf("%d %d", &a, &b);
while(a--)
{
int n;
scanf("%d",&n);
suma+=n;
}
int i,j,left,left2=0,right,right2=b-1,sumb=0,tmp,min=INT_MAX,*arr=malloc(sizeof(int)*b);
while(~scanf("%d",arr+i++));
for(i=0;i<b;i++)
{
for(j=i;j<b;j++)
{
sumb+=arr[j];
if(sumb>suma)
{
left=i;
if(suma-sumb+arr[j]<=sumb-suma)
right=j-1,sumb-=arr[j];
else
right=j;
tmp=sumb-suma;
if(tmp<0)
tmp=-tmp;
if(tmp<min)
{
min=tmp;
left2=left,right2=right;
}
break;
}
}
sumb=0;
}
for(i=left2;i<=right2;i++)
{
printf("%d ",arr[i]);
}
return 0;
}

查看6道真题和解析