美文网首页程序员iOS Developer
iOS/OC: 求任意多个数组元素的组合问题

iOS/OC: 求任意多个数组元素的组合问题

作者: 疯狂的向日葵 | 来源:发表于2016-12-16 09:58 被阅读100次

版权声明:本文为博主原创文章,未经博主允许不得转载。

需递归求解
OC版源码:

#import "ViewController.h"

static NSMutableArray *ComputeAllCombinationsWithArrays(NSMutableArray *arrays){
    NSInteger len = arrays.count;
    if (len >= 2) {
        NSInteger len1 = [arrays[0] count];
        NSInteger len2 = [arrays[1] count];
        NSInteger lenBoth = len1 * len2;
        NSMutableArray *temp = [NSMutableArray arrayWithCapacity:lenBoth];
        for (int i = 0; i < len1; i ++) {
            for (int j = 0; j < len2; j ++) {
                if ([[arrays[0] objectAtIndex:i] isKindOfClass:[NSArray class]]) {
                    NSMutableArray *join = [NSMutableArray arrayWithArray:[arrays[0] objectAtIndex:i]];
                    [join addObject:[arrays[1] objectAtIndex:j]];
                    [temp addObject:join];
                }else{
                   [temp addObject:[NSArray arrayWithObjects:[arrays[0] objectAtIndex:i], [arrays[1] objectAtIndex:j],nil]];
                }
            }
        }
        NSMutableArray *newArr = [NSMutableArray arrayWithCapacity:len - 1];
        [newArr addObject:temp];
        for (int i = 2; i < arrays.count; i ++) {
            [newArr addObject:arrays[i]];
        }
        return ComputeAllCombinationsWithArrays(newArr);
    }else{
        return arrays[0];
    }
}

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    NSLog(@"%@",ComputeAllCombinationsWithArrays(@[@[@"1",@"2"],@[@"3",@"4"],@[@"5",@"6"],@[@"7",@"8",@"9"]].mutableCopy));
}
@end

结果为:

(1,3,5,7),
(1,3,5,8),
...

相关文章

  • iOS/OC: 求任意多个数组元素的组合问题

    版权声明:本文为博主原创文章,未经博主允许不得转载。 需递归求解OC版源码: 结果为:

  • 数组

    一维数组 数组:可以看成是多个相同类型数据的组合,实现对这些数据的同一管理数组中的元素可以是任意数据类型。数组中的...

  • 最大子数组之和

    问题: 输入一个整型数组,数据元素有正数也有负数,求元素组合成连续子数组之和最大的子数组。 描述: 输入的数组为1...

  • iOS- NSArray and NSMutableArray

    1.NSArray //数组的创建和初始化//nil:数组结束标志//id:保存任意oc对象(数组中元素的类型可以...

  • OC 笛卡尔积算法《转》

    递归求笛卡尔积 求N个数组中元素任意组合 这两天搞一个订单多规格筛选, ,推荐了这个算法,,虽然没用上,,看上去还...

  • iOS 求笛卡尔积写法

    求任意数组笛卡尔积 OC Swift 写法 求这三个数组的笛卡尔积 ,结果应该是 有27个。 具体实现: 结果: ...

  • iOS9新特性-OC泛型数组

    1.OC泛型数组的意义: OC数组可以存放任意类型的对象,但是在开发中,绝大多数是存放相同类型元素,利用泛型数组可...

  • function

    求任意数组的最大值 求任意数组的最小值 //求任意范围数字和 求任意数字的总和 // type 检测参数数据类型...

  • 算法---求四数之和

    给定一个数组,求四个元素为target的所有组合

  • Array(数组)10个常用方法

    1、push 在数组末尾添加一个或多个元素,并返回数组的长度, 可以添加任意类型的值作为数组的一个元素。 2、un...

网友评论

    本文标题:iOS/OC: 求任意多个数组元素的组合问题

    本文链接:https://www.haomeiwen.com/subject/pyknmttx.html