Сначала прочитайте число в строку.Вы можете прочитать его в целое число и после этого записать его в строку, если хотите убедиться, что формат правильный:
int number;
if (!(std::cin >> number)) {
// Failure to read number. Do some diagnostic.
throw std::runtime_error("invalid number");
}
// Number read successfully. Write it to a string.
std::string s = std::to_string(number);
Первая перестановка - это отсортированная перестановка всех цифр.Это легко получить, используя std::sort
.
std::sort(s.begin(), s.end());
Наконец, используйте std::next_permutation
, чтобы получить другие перестановки.Как только он получит последний, он вернет false
и выйдет из цикла.
int n{0};
do {
++n;
std::cout << s << '\n';
} while (std::next_permutation(s.begin(), s.end()));
std::cout << "Number of permutations: " << n;
Живой пример