Я пытаюсь перевести алгоритм, который генерирует все перестановки к из п в C++:Перестановка алгоритм C++
public void calculerEquipeTOT(ArrayList<Nageur> L, ArrayList<Nageur> F, int k) {
if (k == 0) {
if (calculerPointsTOT(L) > this.pointsMeilleureEquipe){
this.meilleureEquipe = L;
this.pointsMeilleureEquipe = calculerPointsTOT(meilleureEquipe);
}
} else {
for (Nageur x : F) {
ArrayList<Nageur> G = new ArrayList<Nageur>(F);
G.remove(G.indexOf(x));
ArrayList<Nageur> L2 = new ArrayList<Nageur>(L);
L2.add(x);
calculerEquipeTOT(L2, G, k - 1);
}
}
}
Моя проблема заключается в том, что списки могут быть список объектов, и я не знаю, как удалить x списка L2 ... Я не специалист по C++, мне это удалось на Java, но я должен сделать это на C++.
Что не так с использованием ['std :: next_permutation'] (http://en.cppreference.com/w/cpp/algorithm/next_permutation) на самом деле? –
Потому что я понимаю, что std :: next_permutation работает в отсортированном массиве, и я хочу использовать список объектов, например, вектор, не так ли? –
@TerryBlain No. 'std :: next_permutation' поможет вам в вычислении всех перестановок диапазона:' std :: vector ps = ...; do {doSomething (ps); } while (std :: next_permutation (ps.begin(), ps.end())); '. См. Http://en.cppreference.com/w/cpp/algorithm/next_permutation для примера и подробной справки. –
stefan