在给定x数量的数组(每个数组可能包含不同数量的元素)的情况下,如何遍历从每个数组中选择一项的所有组合?
x
例:
[ ] [ ] [ ] foo cat 1 bar dog 2 baz 3 4
退货
[foo] [cat] [ 1 ] [foo] [cat] [ 2 ] ... [baz] [dog] [ 4 ]
我正在Perl,顺便说一句。
可以在http://www.perlmonks.org/?node_id=7366上找到用于做笛卡尔积的递归和更流利的Perl示例(包括注释和文档)。
sub cartesian { my @C = map { [ $_ ] } @{ shift @_ }; foreach (@_) { my @A = @$_; @C = map { my $n = $_; map { [ $n, @$_ ] } @C } @A; } return @C; }