题解 | 牛牛的数组匹配
牛牛的数组匹配
https://www.nowcoder.com/practice/3d3406f4a7eb4346b025cc592be5b875
#include <stdio.h> void sum(int arr2[], int start, int m, int* left, int* right, int sum_a, int* min) { int sum2 = 0; int sum1 = 0; int ret = 0; for (int i = start; i < m; i++) { sum2 += arr2[i]; ret = sum2 > sum_a?(sum2 - sum_a):( sum_a - sum2); if (ret < *min) {//如果发现是最小值,刷新当前的left和right *min = ret; *left = start; *right = i; } } } int main() { int n, m, sum_a = 0; int arr1[1000] = {0}; int arr2[1000] = {0}; //读取数据 scanf("%d %d", &n, &m); for (int i = 0; i < n; i++) { scanf("%d", &arr1[i]); sum_a += arr1[i]; //计算a的总和 } for (int i = 0; i < m; i++) { scanf("%d", &arr2[i]); } int min = 10000; int left = 0; int right = 0; for (int i = 0; i < m; i++) { sum(arr2, i, m, &left, &right, sum_a, &min); } for (int i = left; i <= right; i++) { printf("%d ", arr2[i]); } return 0; }