NSDictionary *parameter = @{@"a":@[@"101", @"102"], @"b":@[@"203", @"206"], @"c":@[@"306"]};
NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithDictionary:parameter];
//调用
NSMutableArray *arr = [self CtArry:dic];
//实现方法
-(NSMutableArray * )CtArry:(NSMutableDictionary * _Nullable)myDict
{
NSMutableArray * temp_arry = [[NSMutableArray alloc] init];
// 先取字典kye排序,再插入到列表
NSArray *myKeys = [myDict allKeys];
NSArray *sortedKeys = [myKeys sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
for(id key in sortedKeys) {
id object = [myDict objectForKey:key];
[temp_arry addObject:object];
}
NSMutableArray* result = [[NSMutableArray alloc] init];
if ([temp_arry count] != 1) {
// 重新组合所有可能性
NSMutableArray *temp = [NSMutableArray arrayWithCapacity:[temp_arry count]];
[self combine:result temp:temp Data:temp_arry Curr:0 Count:(int)[temp_arry count]];
[temp removeAllObjects];
temp = nil;
}
else
{
for (NSNumber * number in temp_arry[0]) {
[result addObject:number];
}
}
return result;
}
-(void) combine:(NSMutableArray*)result temp:(NSMutableArray *)temp_baseArray Data:(NSArray*) data Curr:(int) curr Count:(int) count
{
if (curr == count)
{
[result addObject:[[NSMutableArray alloc] initWithArray:temp_baseArray]];
}
else
{
NSArray* array = [data objectAtIndex:curr];
for (int i = 0; i < [array count]; ++i)
{
temp_baseArray[curr] = [array objectAtIndex:i];
// NSLog(@" \n%d\n%@ ",curr,temp_baseArray);
[self combine:result temp:temp_baseArray Data:data Curr:curr+1 Count:count];
}
}
}
数组重新组合
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 1 将传进数据数组排序2 递归求和 (当相加大于特定值 进行内部递归)1 将数组排序 2 判定数组之和 内递归的实...
- 以上的数组中teacher_id是一样的.以teacher_id为主体重新组合 $audition=array('...
- 买房看风水,不是说搞迷信。它还是有一定的道理存在的。当然在买房这件事情上你也不能全部依赖风水说,它只能当作一个参考...