iOS/OC: 임의의 여러 개의 그룹 요소의 조합 문제 구하기

1780 단어
판권 성명: 본고는 블로거의 오리지널 문장으로 블로거의 허락 없이 전재할 수 없습니다.
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),
...

좋은 웹페이지 즐겨찾기