Форум программистов, компьютерный форум CyberForum.ru

Перестановки с next_permutation - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
Aliru
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 83
27.11.2013, 20:41     Перестановки с next_permutation #1
Есть входные данные 9-12 цифр
надо из них создать все возможные перестановки и отправить их в вектор. Задумка
C++
1
2
3
4
5
do 
{
   possibleResult.push_back(что-то)
 } 
while ( next_permutation(acid,acid + aminoAcid.size()) );
possibleResult и aminoAcid это векторы
acid это массив с теми же значениями что и в aminoAcid
Не могу понять с какой стороны даже начать без этой функции

Добавлено через 8 минут
Возможно есть способ самому написать ф-ю кторая создаст все перестановки, но ничего умнее 12 циклов(для 12 цифр) я не придумал.
Шаблон который сам пишет к циклов for на основе входного к я тоже не могу придумать(возможно такого и нет)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2013, 20:41     Перестановки с next_permutation
Посмотрите здесь:

C++ перестановки в С++
Перестановки C++
C++ Сдвиг перестановки.
C++ те же перестановки
Next_permutation C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Убежденный
Системный программист
 Аватар для Убежденный
14200 / 6215 / 986
Регистрация: 02.05.2013
Сообщений: 10,357
Завершенные тесты: 1
27.11.2013, 22:15     Перестановки с next_permutation #2
1) Запишите входные цифры в массив.
2) Отсортируйте массив.
3) В цикле вызывайте next_permutation, пока она не вернет false.
На каждой итерации цикла у вас будет очередная комбинация.
Aliru
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 83
28.11.2013, 01:54  [ТС]     Перестановки с next_permutation #3
Вопрос не совсе был в этом.
Пункты 1 и 2 я сделал.
Вопрос как в пункте 3 получаемые перестановки отправлять в вектор, например.
Убежденный
Системный программист
 Аватар для Убежденный
14200 / 6215 / 986
Регистрация: 02.05.2013
Сообщений: 10,357
Завершенные тесты: 1
28.11.2013, 09:06     Перестановки с next_permutation #4
std::vector<std::vector>, например.
Aliru
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 83
28.11.2013, 12:02  [ТС]     Перестановки с next_permutation #5
Не совсем понял?
C++
1
2
3
4
5
6
7
8
9
1
2
3
4
5   do 
{
   possibleResult.push_back(что-то)
 } 
while ( next_permutation(acid,acid + aminoAcid.size()) );
possibleResult это и есть вектор, вопрос что использовать в качестве параметра ф-ии push_back()
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
28.11.2013, 12:05     Перестановки с next_permutation #6
Цитата Сообщение от Aliru Посмотреть сообщение
что использовать в качестве параметра ф-ии push_back()
Если я правильно понял, то
C++
1
possibleResult.insert(possibleResult.end(), acid, acid + aminoAcid.size());
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2013, 12:27     Перестановки с next_permutation
Еще ссылки по теме:

Перестановки C++
Перестановки next_permutation + map C++
C++ Использование next_permutation

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Aliru
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 83
28.11.2013, 12:27  [ТС]     Перестановки с next_permutation #7
C++
1
2
3
4
5
6
7
do 
    {
        Result.insert(Result.end(),Acid.begin(),Acid.end());
    } 
    while ( next_permutation(Acid.begin(),Acid.end()) );
    for ( i = 0; i < Result.size(); i++)
        cout << Result.at(i) << endl;
Да, вроде правильно, но только не работает почему-то
Yandex
Объявления
28.11.2013, 12:27     Перестановки с next_permutation
Ответ Создать тему
Опции темы

Текущее время: 09:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru