3

我正在寻找一种方法,该方法采用任意数量的 NSArray 对象,并返回该数组成员的所有可能完整组合的嵌套数组。

正如我在回答这个问题时被告知的那样,我正在寻找创建一个二分图,或者更准确地说,一个完整的二分图

因此,例如,如果我有两个数组:

NSArray *a1 = [NSArray arrayWithObjects:@"Blue", @"Green", @"Yellow", nil];
NSArray *a2 = [NSArray arrayWithObjects:@"Apple", @"Orange", @"Pear", nil];

我想要一个采用这些数组的数组的方法:

NSArray *nestedArray = [NSArray arrayWithObjects:a1, a2, nil];

并返回所有可能组合的数组,长度相同。所以,在这个例子中,我想要一个大致如下所示的数组:

 [
      [@"Blue", @"Apple"],
      [@"Blue", @"Orange"],
      [@"Blue", @"Pear"],
      [@"Green", @"Apple"],
      [@"Green", @"Orange"],
      [@"Green", @"Pear"],
      [@"Yellow", @"Apple"],
      [@"Yellow", @"Orange"],
      [@"Yellow", @"Pear"]
]

随着这些数组中对象数量的增加,我相信结果的数量也会呈指数增长。然后我可能会将此方法作为 NSArray 上的一个类别。另外,我希望结果的长度都相同。也就是说,如果有三个源数组,则该方法返回的每个嵌套数组的长度都应为 3。

关于最优雅的方法的任何想法?

4

2 回答 2

1

所有组合是什么意思?如果您想要所有组合,为什么需要两个列表?如果你想要一个二分图,那么你想纠正你的问题。

于 2011-03-21T14:19:24.943 回答
0

A recursive solution is probably a good solution. The function would only find the permutations of the first two arrays and then once combined into a single array, you would call this function again with the new combined array instead of the original arrays.

Eventually you would only have 1 array left and that would be the final result array.

于 2011-03-21T01:28:08.850 回答