小编典典

具有给定数字元素的集合的组合

algorithm

我曾尝试这样做,但无法弄清楚,

可以说我有一套: {1,2,3,4,5}

我想拥有2个元素的组合,例如:

{1,2}
{1,3}
{1,4}
{1,5}
{2,3}
{2,4}
{2,5}
{3,4}
{3,5}
{4,5}

我如何在Objective-C中实现呢?

我已经检查过算法,但是我不知道该怎么办..这是我之前检查过的主要网址:从n返回k个元素的所有组合的算法

如果有人可以帮助我,我将非常高兴..

问候。


阅读 267

收藏
2020-07-28

共1个答案

小编典典

只是一个嵌套循环,可以遍历数组的元素并将组合写入结果数组即可(此代码已经过测试并且可以工作):

NSArray *set = [[NSArray alloc] initWithObjects:
                [NSNumber numberWithInteger:1],
                [NSNumber numberWithInteger:2],
                [NSNumber numberWithInteger:3],
                [NSNumber numberWithInteger:4],
                [NSNumber numberWithInteger:5], nil];

NSMutableArray *combinations = [[NSMutableArray alloc] init];

for (NSInteger i=0; i<[set count]; i++) {
    for(NSInteger j=i+1; j<[set count]; j++){
        NSArray *newCombination = [[NSArray alloc] initWithObjects:
                                   [set objectAtIndex:i],
                                   [set objectAtIndex:j],
                                   nil];
        [combinations addObject:newCombination];
        NSLog(@"added combination %@", newCombination);
    }
}

在此嵌套循环的结尾,NSMutableArray 组合 包含您的所有组合。

2020-07-28