NOIP2002均分纸牌(提高组T1)————模拟

题解:本题主要考查模拟,结题关键:
1.求平均数,简化题目。
2.过滤前后的0.
3.向右移数,并且加后滤0(关键中的关键)
代码如下:

#include<iostream>
using namespace std;
int a[10000];
int main()
{
    int n,ave=0,total=0,step=0,i,j;
    cin>>n;
    for(i=1;i<=n;i++)
    {
        cin>>a[i];
        total=a[i]+total;
    }
    ave=total/n;
    for(i=1;i<=n;i++)a[i]=a[i]-ave;
    i=1;j=n;
    for(;i<n&&a[i]==0;)i++;
    for(;j>1&&a[j]==0;)j--;
    for(;i<j;)
    {   
        a[i+1]=a[i+1]+a[i];
        a[i]=0;
        step++; i++;
        while(a[i]==0&&i<j)i++;
    }
    cout<<step;
   return 0;
}

猜你喜欢

转载自blog.csdn.net/wly1127/article/details/82155688