题解 | #牛牛的数组匹配#
牛牛的数组匹配
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; }