这是杭电ACM的2088题,我写的程序,哪里错了,那位高手能帮我改一下,谢谢!

2024-12-26 17:26:37
推荐回答(3个)
回答1:

你理解题意错误吧,另外还有两个地方,第一scanf("%d",a[i]);
应为scanf("%d",&a[i]); 第二:while(m*a[0]!=sum)循环根本就不会
停止,你那个search(a,m);没有改变m,a[0],sum的值。给你提供一个代码,
你自己看看吧。
#include
int main()
{
int n,h[55];
int t=0,i,sum,move;
while(scanf("%d",&n)!=EOF&&n)
{
sum=0;
for(i=0;i {
scanf("%d",&h[i]);
sum+=h[i];
}
sum/=n;
move=0;
for(i=0;i if(h[i]>sum)move+=(h[i]-sum);
if(t)printf("\n");
printf("%d\n",move);
t++;
}
return 0;
}

回答2:

敢不敢说一下题目,英文的也行!!~
首先先说两个明显的错误,1.m没有赋初值就开始用,是一个大忌。2.scanf("%d",a[i]);a[i]前面要加&取地址符号的。

回答3:

#include

int main()
{
int n , bri[60] , i , sum , ava , first ;
first = 0 ;
while( scanf( "%d" , &n ) != EOF )
{
if( n == 0 ) return 0 ;
if( first )
printf( "\n" ) ;
else
first = 1 ;
sum = 0 ;
for( i = 0 ; i < n ; i ++ )
{
scanf( "%d" , &bri[i] ) ;
sum += bri[i] ;
}
ava = sum / n ;
sum = 0 ;
for( i = 0 ; i < n ; i ++ )
{
if( bri[i] > ava )
sum += bri[i] - ava ;
}
printf( "%d\n" , sum ) ;
}
return 0 ;
}