题解 | 牛牛的数组匹配

牛牛的数组匹配

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;
}


全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务