Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
Aliru
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 83
#1

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

27.11.2013, 20:41. Просмотров 1666. Ответов 6
Метки нет (Все метки)

Есть входные данные 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 на основе входного к я тоже не могу придумать(возможно такого и нет)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2013, 20:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перестановки с next_permutation (C++):

Перестановки next_permutation + map - C++
Есть большой кусок кода который я написал, попытался использовать перестановку для мапа, именно ключей в лексикографическом порядке...

Next_permutation - C++
Здравствуйте, Вот не понимаю, каким образом алгоритм next_permutation выполняет следующую большую перестановку. Он как-то генерирует...

Использование next_permutation - C++
Правильно ли я использую next_permutation? Мне нужно вывести все перестановки символов данной строки в алфавитном порядке. ...

Next_permutation() и Time Limit - C++
Задача https://www.e-olymp.com/ru/problems/364 Мой код: #include <bits/stdc++.h> using namespace std; int main() { int...

Перестановки: чтобы любые две соседние перестановки отличались только порядком двух соседних элементов - C++
Вводится число n <= 8. Вывести все перестановки чисел 1,2..,n, так, чтобы две любые две соседние перестановки отличались только порядком...

Перестановки - C++
Есть число которое складается из нулей и единиц. C клавиатуры вводится N - общее количество цифр и K - количество единиц. Найти и вивести...

6
Убежденный
Ушел с форума
Эксперт С++
15698 / 7208 / 1139
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
27.11.2013, 22:15 #2
1) Запишите входные цифры в массив.
2) Отсортируйте массив.
3) В цикле вызывайте next_permutation, пока она не вернет false.
На каждой итерации цикла у вас будет очередная комбинация.
0
Aliru
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 83
28.11.2013, 01:54  [ТС] #3
Вопрос не совсе был в этом.
Пункты 1 и 2 я сделал.
Вопрос как в пункте 3 получаемые перестановки отправлять в вектор, например.
0
Убежденный
Ушел с форума
Эксперт С++
15698 / 7208 / 1139
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
28.11.2013, 09:06 #4
std::vector<std::vector>, например.
0
Aliru
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 83
28.11.2013, 12:02  [ТС] #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()
0
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
28.11.2013, 12:05 #6
Цитата Сообщение от Aliru Посмотреть сообщение
что использовать в качестве параметра ф-ии push_back()
Если я правильно понял, то
C++
1
possibleResult.insert(possibleResult.end(), acid, acid + aminoAcid.size());
1
Aliru
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 83
28.11.2013, 12:27  [ТС] #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;
Да, вроде правильно, но только не работает почему-то
0
28.11.2013, 12:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2013, 12:27
Привет! Вот еще темы с ответами:

перестановки в С++ - C++
Поменять местами элементы с четными и нечетными номерами

те же перестановки - C++
Вот опять задачка на перестановки, если кому интересно, или кому просто не трудно сделать, буду очень признателен! Заранее огромное...

Перестановки - C++
Даны символы, например ABCDEF, и число n. Нужно вывести все возможные комбинации перестановок этих символов по n. Максимальное число...

Инверсии и перестановки - C++
Ребят, помогите пожалуйста, сделать 2 задачки, буду очень вам признателен! Заранее огромное спасибо. 1.Дана перестановка. Наименьшее...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru