Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.71/125: Рейтинг темы: голосов - 125, средняя оценка - 4.71
Полярный
476 / 448 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
1

Все возможные перестановки букв слова - нужен алгоритм

03.12.2011, 11:51. Показов 25914. Ответов 22
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток, форумчане. Помогите пожалуйста найти/составить алгоритм решения следующей задачи:
Дано слово. Найти все возможные варианты перестановки его букв.

Пример:
Дано:
abc
Вывести:
acb
abc
bac
bca
cba
cab

PS Встречал я кое-где решение с next_permutation, но мне важно решить без всяких левых функций.
PSS Ну и программу по ходу дела смастерить тоже нужно
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.12.2011, 11:51
Ответы с готовыми решениями:

Найти все возможные варианты написания слова в верхнем и нижнем регистрах букв.
Хотелось бы увидеть кусочек кода, который выполнял бы следующее: Есть слово "Напримерэто". Как мне...

Вывести все возможные перестановки слов в предложении
С клавиатуры пишем предложение. Вывести все возможные перестановки тех слов в этом предложении,...

Все возможные перестановки элементов заданного массива
Помогите вывести на консоль все возможные перестановки элементов заданного массива void...

Все возможные варианты перестановки символов строки
Дана строка s, состоящая из n символ (n меньше 6) составить все возможные варианты перестановки...

22
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
03.12.2011, 20:35 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от dimcoder Посмотреть сообщение
Гуууугл?
http://rain.ifmo.ru/cat/view.p... tions-2000

Добавлено через 1 минуту
Можно еще с помощью рекурсии
1
Полярный
476 / 448 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
04.12.2011, 09:17  [ТС] 22
Цитата Сообщение от go Посмотреть сообщение
http://rain.ifmo.ru/cat/view.php/vis...mutations-2000
Спасибо за ссылку, полезно.
Цитата Сообщение от go Посмотреть сообщение
Можно еще с помощью рекурсии
Предпочитаю, как то без этих рекурсий делать. Они память грузят. Говорят, мол, красиво через рекурсию - для меня пока запутанно больше. Да и потом, любую задачу, которую можно решить рекурсивно, можно решить и через цикл. Но всё же со временем я напишу рекурсивный код.
0
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
04.12.2011, 09:58 23
Вот такой есть НЕРЕКУРСИВНЫЙ алгоритм
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>
#define N 6
 
main()
{ char s[N+1], t; int i, j, r, k;
 
 for(i=0; i<N; i++) s[i] = '1'+i;
 s[N] = '\0';
 
 while(1) {
   printf("%s\n", s);
       // Находим самое правое место, где s[i] < s[i+1]
   for(i=N-1; i>=0 && s[i] > s[i+1]; i--) ;
   if (i<0) break; // Уже получили "654321" - самую старшую перестановку
       // Находим s[j] - наименьший элемент справа от s[i] и больший его
   for(j=N-1; s[i] > s[j]; j--) ;
       // Меняем s[i] <-> s[j]
   t = s[j];
   s[j] = s[i];
   s[i] = t;
       // То, что за "i" - переворачиваем
   for(k=i+1, r=N-1; r > k; k++, r--) {
     t = s[r];
     s[r] = s[k];
     s[k] = t;
   }
 }
}
/*****************/
Нашел в книге Липского "Комбинаторика для программистов"
2
04.12.2011, 09:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.12.2011, 09:58
Помогаю со студенческими работами здесь

Рекурсивная функция: все возможные перестановки символов строки
Дана строка с n элементами. Например abs. Надо выводить все возможные варианты например abs asb...

Вывести на экран все возможные перестановки введенных ползователем символов
С клавиатуры задается последовательность символов. Написать программу, которая выводит на экран все...

Вывести на экран все возможные перестановки введенных символов. Где ошибка?
С клавиатуры задается последовательность символов. Написать программу, которая выводит на экран все...

Ввести число. Используя рекурсивную функцию, получить все возможные перестановки цифр этого числа
Помогите пожалоста..........Заранеє спасибо


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

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru