next_permutation を同じサイズの 2 つの異なる配列で同じスワップ セットを実行する簡単な方法はありますa[]={1,2,3,4,5}
かb[]={12,23,21,2,3}
。位置。
質問する
713 次
2 に答える
4
補助インデックスセットを作成できます。
int a[] = { 1, 2, 3, 4, 5 };
int b[] = { 12, 23, 21, 2, 3 };
std::size_t indices[] = { 0, 1, 2, 3, 4 };
次に、で順列を実行してからindices
、とを使用a[indices[i]]
しb[indices[i]]
ます。
于 2012-05-09T20:14:31.283 に答える
1
std::next_permutation は状態を保持しないことに注意してください (stl アルゴリズムの概念に反します)。では、どのようにして次の順列を生成するのでしょうか? 要素の順序でそれを行います。そのため、比較演算子を受け入れるバージョンがあります
サイズ N のソート済み配列を指定すると、next_permutation を N と呼ぶことができます! 回。そうしないと、アルゴリズムが false を返すまでの順列が少なくなります。
あなたの質問に答えるために、上記のように「補助インデックスセット」に関して配列が同じ順序である場合、同じ要素が交換されます。
例:
int a[] = { 1, 2, 4, 3 };
int b[] = { 11, 12, 14, 13 };
sort は同じインデックス順序を生成するため、これらは同じように並べ替えられます。
于 2012-05-10T05:22:38.830 に答える