题解 | 牛牛的数组匹配

牛牛的数组匹配

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

#include <stdio.h>
#include <stdlib.h>
#include <limits.h>

int main()
{
	int n, m;
	scanf("%d %d", &n, &m);
	int a[100] = {0};
	int b[100] = {0};
	int prefix_b[100] = {0};
	int sum_a = 0;
	for (int i = 0; i < n; i++)
	{
		scanf("%d", &a[i]);
		sum_a += a[i];
	}
	int sum_prefix_b = 0;
	for (int i = 0; i < m; i++)
	{
		scanf("%d", &b[i]);
		sum_prefix_b += b[i];
		prefix_b[i] = sum_prefix_b;
	}
	int min_gap = INT_MAX;
	int k = 0, l = 0;
	for (int i = 0; i < m; i++)
	{
		for (int j = i; j < m; j++)
		{
			int current_sum;
			if (i == 0)
			{
				current_sum = prefix_b[j];
			}
			else
			{
				current_sum = prefix_b[j] - prefix_b[i - 1];
			}
			int gap = abs(sum_a - current_sum);
			if (gap < min_gap || (gap == min_gap && i < k))
			{
				min_gap = gap;
				k = i;
				l = j;
			}
		}
	}
	for (int i = k; i <= l; i++)
	{
		printf("%d ", b[i]);
	}
	return 0;
}

全部评论

相关推荐

11-07 11:05
已编辑
西安电子科技大学 golang
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务