题解 | #牛牛的数组匹配#

牛牛的数组匹配

https://www.nowcoder.com/practice/3d3406f4a7eb4346b025cc592be5b875

#include <stdio.h>
int main()
{
	int a = 0, b = 0;
	int arra[1000] = { 0 };
	int arrb[1000] = { 0 };
	int sum[1000] = { 0 };
	int i1, i2, i3;
	int suma = 0, sumb = 0;
	int shu = 0;//确定每次要输入下标
	scanf("%d %d", &a, &b);
	for (i1 = 0; i1 < a; i1++)
	{
		scanf("%d", &arra[i1]);
		suma = suma + arra[i1];
	}
	for (i1 = 0; i1 < b; i1++)
	{
		scanf("%d", &arrb[i1]);
	}//输入数组

	for (i1 = 0; i1 < b; i1++)
	{
		for (i2 = 0; i2 < b; i2++)
		{
			int t = 0;
			int c = i2;
			if (i2 + i1 >= b)
			{
				break;
			}
			for (i3 = 0; i3 <= i1; i3++)
			{
				t = t + arrb[c++];
			}
			t - suma > 0 ? (sum[shu++] = t - suma ):( sum[shu++] = suma - t);
		}
	}//创建差值数组
    
	int min = 9999999999999;
	int flag= 0;//记录位置
	for (i1 = 0; i1 < b* (b + 1) / 2; i1++)
	{
		if (min > sum[i1])
		{
			min = sum[i1];
			flag = i1;
		}
	}

	shu = 0;
	for (i1 = 0; i1 < b * (b + 1) / 2; i1++)
	{
		for (i2 = 0; i2 < b; i2++)
		{
			int c = i2;
			if (i2 + i1 >= b)
			{
				break;
			}
			if (shu == flag)
			{
				for (i3 = 0; i3 <= i1; i3++)
				{
					printf("%d ", arrb[c++]);
				}
				goto jie;
			}
			shu++;
		}
	}
	jie:
	return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务