标签:
第五题:n 只奶牛坐在一排,每个奶牛拥有 ai 个苹果,现在你要在它们之间转移苹果,使得最后所有奶牛拥有的苹果数都相同,每一次,你只能从一只奶牛身上拿走恰好两个苹果到另一个奶牛上,问最少需要移动多少次可以平分苹果,如果方案不存在输出 -1
输出一行表示最少需要移动多少次可以平分苹果,如果方案不存在则输出 -1。
4 7 15 9 5
3
#include<iostream> #include<algorithm> using namespace std; int a[100]; int main() { int n; while(scanf("%d",&n)>0) { int sum=0; for(int i=1;i<=n;i++) { scanf("%d",&a[i]); sum=sum+a[i]; } int flag=0; if(sum%n!=0)//如果总数不能被平分,那么怎么挪也是失败 flag=1; int avg=sum/n,cnt=0; for(int i=1;i<=n;i++) { if(abs(a[i]-avg)%2!=0)//如果有的不能通过每次挪两个达到平均值那么就会失败 flag=1; cnt+=abs(a[i]-avg)/2; } if(flag) cout<<-1<<endl; else cout<<cnt/2<<endl;//每次挪动解决两个奶牛的问题,所以要除2 } }
标签:
原文地址:http://www.cnblogs.com/ranranblog/p/5777614.html