讨论 / 贪心就要胆子大
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
回复 删除
贪心的那个循环内,直接一个判断就好,不需要2个判断

for(i=1;i<=n;i++)

if(a[i]!=p)

{

l=a[i]-p;

a[i]-=l;

a[i+1]+=l;

k++;

}

查看更多回复
提交回复