Перебор возможных комбинаций символов - C (СИ)
Формулировка задачи:
Чет мой чайник совсем не варит! Помогите сделать следущее:
Вывести все возможные комбинации слов. Есть:
Логика мне ясна, а вот с реализацией туго!
Число возможных вариантов: 3*3*3 = 27
Я думаю начать с конца слова, с постепенным смещением влево. Но вот запутался в циклах...
Допустим меняю последний символ:
aaa aab aac
Затем смещаюсь влево:
aba
Опять последний:
aba abb abc
И у меня ступор... Исходник пустил под скальпель, пытаясь что-то сделать, так что не просите показать
А где есть исходники подобных алгоритмов?
char ch_table[] = "abc"; //таблица символов char word[] = "aaa"; //само слово - начальный вариант
->->->->-> aaa aab aac aba abb abc aca acb acc baa bab bac bba bbb bbc bca bcb bcc caa cab cac cba cbb cbc cca ccb ccc
Решение задачи: «Перебор возможных комбинаций символов»
textual
Листинг программы
#include <iostream> #include <algorithm> using namespace std; //========================================== int main () { char arr[] = "abc"; const int N = strlen(arr); cout << " arr[" << N << "] \n\n "; sort(arr, arr + N); //reverse (arr, arr + N); cout << arr << "\n\n "; while( next_permutation(arr, arr + N) )//prev_permutation { for(int i = 0; i < N; i++) { cout << arr[i]; } cout << endl << " "; } system("pause"); return EXIT_SUCCESS; } //==========================================
Объяснение кода листинга программы
В этом коде перебираются все возможные комбинации символов в строке abc
.
- Создается строка
abc
и сохраняется в массиве arr типа char. - Вычисляется длина строки с помощью функции strlen и сохраняется в переменной N.
- С помощью функции cout выводится длина строки.
- С помощью функции sort сортируется строка в обратном порядке.
- С помощью функции cout выводится отсортированная строка.
- С помощью цикла while запускается процесс перебора всех возможных комбинаций символов.
- В каждой итерации цикла с помощью функции cout выводится текущая комбинация символов.
- После каждой итерации цикла вызывается функция next_permutation, которая генерирует следующую комбинацию символов.
- После завершения цикла система вызывается функция pause, чтобы программа не закрылась раньше времени.
- Возвращается значение EXIT_SUCCESS.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д