数组分成两组差值最小 python_把一个数组分成两部分,求这两部分的差的最小值,怎么做??(C++编程)...

//这道题是最基本的组合问题

//zuhe[i]数值的0值代表 a[i] 左部分 1值代表 右部分 每次计算完毕 对组合更新

#include 

#include 

#include 

int main()

{

int zuhe[21],a[21],suma,sumb,min,n,i;

//接收

while(scanf("%d",&n),n>0)

{

min=20*500000;

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

{

scanf("%d",&a[i]);

}

//重置组合值为0

memset(zuhe,0,sizeof(zuhe));

//当组合未全部迭代过

while(zuhe[0]==0)

{

//根据组合值计算俩部分的 差值

suma=0;

sumb=0;

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

{

if(zuhe[i]==0)

{

suma+=a[i];

}

else

{

sumb+=a[i];

}

if(min>abs(sumb-suma))

{

min=abs(sumb-suma);

}

}

//计算完毕后更新zuhe值

zuhe[n]++;

i=n;

while(zuhe[i]==2)

{

zuhe[i]=0;

zuhe[i-1]++;

i--;

}

}

//输出min

printf("%d\n", min);

}

return 0;

}

我测试了下  应该没问题了 输入小于0 结束

关于这类 类型 可以去看看排列组合的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值