@Leevz

Как перебрать все перестановки на C++?

Реальная задача посложнее, но мне нужно понять лишь сам принцип, поэтому она очень упрощена. Всего есть три типа букв: A, B и C. На вход программы подаются три числа - количество букв A, количество букв B и соответственно C. Как можно перебрать все перестановки (перестановки с математической точки зрения)? Не важно, что с ними делать, выводить, складывать или находить наибольшее, важно, чтобы просто была возможность получить каждую перестановку, а не какие-либо другие комбинации. Сами буквы должны являться элементами массива. Например, на вход подаются числа "1 1 1", поэтому соответствующие комбинации будут: ABC, ACB, BAC, BCA, CAB, CBA. Это простые входные данные, но на практике может быть, например, и такая комбинация чисел - "6 2 3". Не обязательно на C++, но было бы неплохо
  • Вопрос задан
  • 12077 просмотров
Решения вопроса 1
sgjurano
@sgjurano
Разработчик
Сведите задачу к более простой: положите все ваши элементы в массив и сгенерируйте все его перестановки.

https://en.cppreference.com/w/cpp/algorithm/next_p...
#include <algorithm>
#include <string>
#include <iostream>
 
int main()
{
    std::string s = "aba";
    std::sort(s.begin(), s.end());
    do {
        std::cout << s << '\n';
    } while(std::next_permutation(s.begin(), s.end()));
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы