全是暴力,没有技巧
#include<stdio.h> #include<iostream> #include<algorithm> using namespace std; int main() { int n; scanf("%d", &n); int nums[n]; for(int i=0; i<n; i++) { scanf("%d", &nums[i]); } int sum = 0; for(int i=0; i<n; i++) { sum += nums[i]; } //tag标记,是否有输出-1的情况;count计数 int tag = 0; int count = 0; //如果sum不能被n整除则说明无法平分 if(sum%n != 0) { printf("%d\n", -1); tag = 1; } else { int average = sum/n; //遍历数组,只记录苹果比较少的情况 for(int i=0; i<n; i++) { if(nums[i] < average) { //因为每次只能取2个,如果缺少的苹果不能被2整除,说明无法平分 if((average - nums[i])%2 != 0 ) { printf("%d\n", -1); tag = 1; break; } else { count = count + (average-nums[i])/2; } } else if(nums[i] > average) { if((nums[i] - average)%2 != 0) { printf("%d\n", -1); tag = 1; break; } } } if(tag == 0) printf("%d\n", count); } return 0; }