我曾尝试这样做,但无法弄清楚,
可以说我有一套: {1,2,3,4,5}
{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个元素的所有组合的算法
如果有人可以帮助我,我将非常高兴..
问候。
只是一个嵌套循环,可以遍历数组的元素并将组合写入结果数组即可(此代码已经过测试并且可以工作):
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 组合 包含您的所有组合。