1 条题解
-
0
C++ :
#include <bits/stdc++.h> using namespace std; int a[1005];//数组a记录每堆的纸牌数 int main() { int n,i,sum=0,aver,ans=0;//n堆纸牌,纸牌的总数为sum,每堆平均aver张,最少移动ans次 scanf("%d",&n);//输入 for(i=1;i<=n;i++) { scanf("%d",&a[i]); sum+=a[i];//累加 } aver=sum/n;//求平均值 for(i=1;i<=n;i++)//从前向后 { if(a[i]<aver)//如果这一堆纸牌的数量小于平均值 { a[i+1]-=(aver-a[i]);//就用后一堆的纸牌来补齐 ans++;//操作数+1 } else if(a[i]>aver)//注意是else if而不是else,因为如果这一堆纸牌的数量等于平均值,就不需要对其进行操作了 { a[i+1]+=(a[i]-aver);//就将多余的纸牌放到下一堆上 ans++;//操作数+1 } } printf("%d\n",ans);//打印 return 0; }
- 1
信息
- ID
- 2291
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者