iOS N个数组,从每个数组中取出一个元素,组合,成为一个新的数组的集合

//回调

- (void)start {

    _needResultArr = [NSMutableArray array];

    NSMutableArray* result = [NSMutableArray array];

    

    NSMutableArray* array_data = [NSMutableArray arrayWithObjects:

                                  @[@"1", @"3", @"5"],

                                  @[@"2", @"4"],

                                  @[@"10", @"20", @"30", @"40"], nil];

    

    [self combine:result data:array_data curr:0 count:(int)array_data.count];

    

    NSLog(@" \n%@ ",_needResultArr);

}


- (void)combine:(NSMutableArray *)result data:(NSArray *)data curr:(int)currIndex count:(int)count {

    

    if (currIndex == count) {

        

        [_needResultArr addObject:[result mutableCopy]];

        [result removeLastObject];

        

    }else {

        NSArray* array = [data objectAtIndex:currIndex];

        

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

            [result addObject:[array objectAtIndex:i]];

            //进入递归循环

            [self combine:result data:data curr:currIndex+1 count:count];

            

            if ((i+1 == array.count) && (currIndex-1>=0)) {

                [result removeObjectAtIndex:currIndex-1];

            }

        }

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值