从N个数中取出任意个数,求和为指定值的解

 题目来自CSDN的帖子:

http://topic.csdn.net/u/20090305/09/829de0d4-be84-41e0-a297-27839b1e4897.html

 

原题是这样的:

任意给一数组,如{-10,45,35,99,10,6,9,20,17,18}
再任意给一个值,如35.
请从上面的数组中找出所有的组合,使他们的和等于35.
例如对于上面的数组,所有的组合情况为:
35;
-10+45;
17+18;
6+9+20;
-10+35+10;
-10+17+18+10;
-10+6+9+20+10;
注意,每一种组合中一个数只能出现一次。

 

 

数组共有N个元素,那么我们可以用1到2^N的二进制来求解,若二进制数该位置是1,则将其取出求和。

检查和是否等于所求,是则输出。此题则是从0000000001一直循环到1111111111即可。

具体代码如下:

 

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值