編輯
剛剛發現另一個線程所以這是非常正是我需要的:How can I create cartesian product of vector of vectors?如何將一組值映射到另一組值?
謝謝大家!
比方說,我有值S1(A, B, C)
的一組和另一個S2(D, E, F)
,其中改造S1 -> S2
會給另一組,S3
,其中S3(AD, AE, AF, BD, BE, BF, CD, CE, CF)
;換句話說,我想將第一組的每個值映射到第二組的每個值,從而得到大小爲S1 x S1
的第三組。現在
,做這兩套是一件小事,但是,我在當它涉及到具有可變多套虧損,即S1 -> S2 -> S3 -> ... -> Sn
如果我們認爲這是一個樹/圖結構,通過查找每條路徑可以解決問題:
start
.
. . .
A B C
. . .
. . . . . . . . .
D E F D E F D E F
是否有可擴展算法來解決此問題?
查看[笛卡爾產品](http://en.wikipedia.org/wiki/Cartesian_product)。我知道一些語言有這個內置的。例如,Python有'itertools.product(* iterables)' – Kevin
@Kevin實際上偶然發現了它[僅2分鐘前](http://en.wikipedia.org/wiki/Projection_%28set_theory%29);不幸的是,我不認爲C++有這個。 – stellarossa
谷歌n-ary笛卡爾產品。有很多變化,但都有O(n^2)的複雜性。 –