iOS多個數組進行排列組合算法

上次有朋友開發(fā)我的時候遇到需要將多個數組里面的字符串逐個進行排列組合,例如:數組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"]];

//放在一個數組中便于循環(huán)添加數組

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;

}

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容