是有一種簡單的方法來使next_permutation以執行相同的一組互換的大小相同 的兩個不同的陣列例如 如果我有兩個陣列a[]={1,2,3,4,5}
和b[]={12,23,21,2,3}
如果在排列1中的排列1到第3個位置之後,然後排列b中的12也應該排到第3個位置。相同排列使用next_permutation()STL
5
A
回答
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]]
。
1
請記住,std :: next_permutation不保留任何狀態(這將違背stl算法的概念)。那麼它如何產生下一個排列呢?它通過元素的順序來完成它。這就是爲什麼有一個接受比較運算符的版本
如果您給它一個大小爲N的排序數組,那麼next_permutation可以被稱爲N!倍。否則,在算法返回false之前,您的置換次數較少。
要回答你的問題,如果數組與上面提出的「輔助索引集」有相同的順序,那麼相同的元素將被交換。
實施例:
int a[] = { 1, 2, 4, 3 };
int b[] = { 11, 12, 14, 13 };
這些將被置換的相同,因爲排序將產生相同的索引排序。
相關問題
- 1. 打印並計算排列次數(不使用stl next_permutation)
- 2. 使用next_permutation來排列類的向量
- 3. C++ next_permutation沒有以相反的順序排列
- 4. 使用相同字母的排列
- 5. 使用STL排序緩衝區排序
- 6. 使用STL的排序功能排列std :: vector <myclass>
- 7. 使用STL的單字母排序加密使用STL,cs106l
- 8. 使用不同編譯器的相同STL文件
- 9. 組合/相同排列
- 10. 同時使用STL容器
- 11. 使用相同的隊列對隊列進行排序
- 12. 字符串向量的next_permutation正在跳過一個排列
- 13. 錯誤使用列表STL
- 14. 使用相同的代碼迭代STL序列和關聯容器?
- 15. 使用另一個stl向量重新排序stl向量
- 16. 使用STL對子字符串排序
- 17. 在C++中使用排序算法STL
- 18. STL的列表使用哪種排序算法:sort()?
- 19. 重新排列數組,使PHP中沒有相鄰值相同
- 20. 使用相同的值對DataTable中的列進行排序
- 21. C++:「reset」std :: next_permutation()
- 22. OpenMP - std :: next_permutation
- 23. bash的排序在列,但不排序相同的列
- 24. 排序ArrayList與陣列相同Algo
- 25. Python - 按相同順序排列CSV
- 26. 在排序列表中刪除相同
- 27. STL地圖排序
- 28. 我可以使用stl排序在C++中的結構排序
- 29. 如何使用與g ++不同的STL
- 30. 如何使用SQL同時對兩個相同的列進行排序?