iOS多个数组进行排列组合算法

上次有朋友开发我的时候遇到需要将多个数组里面的字符串逐个进行排列组合,例如:数组1:@[@"1",@"2",@"3",@"4"],数组2:@[@"5",@"6",@"7",@"8"],数组3:@[@"9",@"10",@"11",@"12"],数组4:@[@"13",@"14",@"15",@"16"],

需要排列成(1,5,9,13),(1,5,9,14)......等组合,下面贴下代码参考下:


NSMutableArray *array1 = [NSMutableArray arrayWithArray: @[@"1",@"2",@"3",@"4"]];

NSMutableArray *array2 = [NSMutableArray arrayWithArray:@[@"5",@"6",@"7",@"8"]];

NSMutableArray *array3 = [NSMutableArray arrayWithArray:@[@"9",@"10",@"11",@"12"]];

NSMutableArray *array4 = [NSMutableArray arrayWithArray:@[@"13",@"14",@"15",@"16"]];

//放在一个数组中便于循环添加数组

NSMutableArray*array = [NSMutableArrayarrayWithObjects:array1,array2,array3,array4,nil];

NSArray*list = [selfmergeArray:array];

NSLog(@"%@",list);


- (NSMutableArray *)mergeArray:(NSMutableArray *)array {

    if(array.count>1) {

        NSMutableArray*resultArray = [NSMutableArrayarray];

        NSMutableArray*firstArray = array[0];

        NSMutableArray*secondArray = array[1];


        for(inti =0; i < firstArray.count;i++) {

            if(![firstArray[i]isKindOfClass:[NSMutableArrayclass]]) {

                firstArray[i] = [NSMutableArrayarrayWithObjects:firstArray[i],nil];

            }

            for(intj =0; j < secondArray.count; j++) {

                if(j ==0) {

                    [firstArray[i]addObject:secondArray[j]];

                }else{

                    [firstArray[i]replaceObjectAtIndex:((NSArray*)firstArray[i]).count-1withObject:secondArray[j]];

                }

                NSArray*temArray = [firstArray[i]mutableCopy];

                [resultArrayaddObject:temArray];

            }

        }

        [arrayreplaceObjectAtIndex:0withObject:resultArray];

        [arrayremoveObjectAtIndex:1];

        [selfmergeArray:array];

    }

    returnarray;

}

推荐阅读更多精彩内容