veason 2013-10-25 23:20:00
点我顶贴
收藏
删除
不废话 直接贴程序
贪心算法
#include<stdio.h>
int main()
{
int zp[10000];
int i,n,k=0,l,p=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&zp[i]);
p=p+zp[i];
}
p=p/n;
for(i=0;i<n-1;i++)
{
if(zp[i]<p)
{
l=p-zp[i];
zp[i]=zp[i]+l;
zp[i+1]=zp[i+1]-l;
k++;
}
if(zp[i]>p)
{
l=zp[i]-p;
zp[i]=zp[i]-l;
zp[i+1]=zp[i+1]+l;
k++;
}
}
printf("%d",k);
return 0;
}
#1 clouds@2015-10-23 18:15:59
33452
回复
删除
贪心的那个循环内,直接一个判断就好,不需要2个判断
for(i=1;i<=n;i++)
if(a[i]!=p)
{
l=a[i]-p;
a[i]-=l;
a[i+1]+=l;
k++;
}