塔那一题 有没有谁能解答一下为什么通过为0……本地一点问题没有啊 思路也是最高的移动到最低的。 #include <stdio.h> int main() { int n, k, i, j, s, m, minIndex, maxIndex, minHeight, maxHeight; int arr[100]; int opArr[2000]; while(scanf("%d %d", &n, &k) != EOF) { int l = 0; for (i = 0; i < n; i++) { scanf("%d", &arr[i]); } for (i = 0; i < k; i++) { minIndex = 0; minHeight = arr[0]; maxIndex = 0; maxHeight = arr[0]; for (j = 0; j < n; j++) { if (arr[j] > maxHeight) { maxHeight = arr[j]; maxIndex = j; } if (arr[j] < minHeight) { minHeight = arr[j]; minIndex = j; } } if (maxHeight - minHeight < 2) { break; } else { arr[maxIndex] -= 1; arr[minIndex] += 1; maxHeight -= 1; minHeight += 1; opArr[l] = maxIndex + 1; opArr[l+1] = minIndex + 1; l += 2; } } s = maxHeight - minHeight; m = i; printf("%d %d\n", s, m); l = 0; for (i = 0; i < m; i++) { printf("%d %d\n",opArr[l], opArr[l+1]); l += 2; } } return 0; }
点赞 3

相关推荐

牛客网
牛客企业服务