1. 程式人生 > >CC分糖果

CC分糖果

題目描述

CC有一天當了幼兒園的老師,常常會給一些小孩糖果,她每次買的糖果數正好能分均勻,但是CC的視力不太好常常會分錯,於是CC讓小孩子們自己去分均勻,傳糖果的規則是1號只能給2號,n號只能給n-1號,其餘的兩邊都可以傳,小孩子們也嫌麻煩,你能幫他們計算出傳的最少次數嗎 輸入 第一行,輸入一個n 下面n個數代表每個孩子初始的糖果數 輸出 輸出最少的傳遞糖果次數

分析:

其實,我們只需要先求出平均數,然後依次判斷每一個數,如果當前數大於平均數,則將,多餘給後面,反之,讓後面將給前面。

#include"stdio.h"
int main()
{
    int n,a[1000];
    int ave,i,j,m=0;
    while(~scanf("%d",&n))
    {   ave=0;m=0;
        for(i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
            ave=ave+a[i];

        }
        ave=ave/n;
        for(i=0;i<n;i++)
        {
            if(a[i]>ave)
            {
                a[i+1]=a[i+1]+a[i]-ave;
                a[i]=ave;
                m++;
            }
            else
                if(a[i]<ave)
            {
                a[i+1]=a[i+1]-(ave-a[i]);
                a[i]=ave;
                m++;

            }
        }
        printf("%d\n",m);
    }
}