C语言求一个数的加法组合,一个(数字)数组任意组合相加等于一个常数求出数组中的组合...

1 将传进数据数组排序

2 递归求和 (当相加大于特定值 进行内部递归)

1 将数组排序

-(void)textSum:(NSArray *)numArray targetNum:(float)targetNum{

NSMutableArray *array = [NSMutableArray arrayWithArray:numArray];

//先排序/Users/amc/Desktop/choose/choose

for (int i = 0; i < array.count; ++i) {

// 从水底往水面浮,所以从最后一个开始

for (NSInteger j = array.count-1; j > i; j--) {

// 后者比前者还小,将需要交换

if ([array[j] intValue] < [array[j - 1] intValue]) {

[array exchangeObjectAtIndex:j withObjectAtIndex:j-1];

}

}

}

self.array = array;

self.targetNum = targetNum;

for (int i = 0; i < array.count; i++) {

NSMutableArray *addArray = [NSMutableArray array];

[self printNum:i addArray:addArray];

}

}

2 判定数组之和 内递归的实现

-(BOOL)printNum:(NSInteger)index addArray:(NSMutableArray *)addArray{

[addArray addObject:self.array[index]];

float sum = [self sum:addArray];

// NSLog(@"111%@",addArray);

if (sum == self.targetNum) {

// NSLog(@"%@",addArray);

[addArray removeLastObject];

return YES;

}else if (sum >self.targetNum){

[addArray removeLastObject];

return NO;

}else{

for (NSInteger i = index+1; i < self.array.count; i++) {

//递归内循环

if (![self printNum:i addArray:addArray]) {

break;

}

}

[addArray removeLastObject];

return YES;

}

}

3 数组求和

-(CGFloat)sum:(NSArray *)array{

CGFloat sum = 0;

for (NSString *str in array) {

sum += [str floatValue];

}

return sum;

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值