Алфавит языка племени «тумба-юмба» содержит всего несколько букв. Найдите все слова длины K , которые можно построить с помощью этого алфавита.
Входные данные
Первая входная строка содержит алфавит языка племени «тумба-юмба». Под алфавитным порядком подразумевается порядок перечисления букв в этой строке. Во второй строке записывается число K .
Выходные данные
Программа должна вывести все слова, которые можно составить с помощью заданного алфавита. Слова должны быть выведены по одному в строчке в алфавитном порядке. После всех слов в отдельной строке выводится их количество.
Примеры
входные данные
ABC
2
выходные данные
AA
AB
AC
BA
BB
BC
CA
CB
CC
9
C/C++
Помогите с задачей C++
#include
#include
#include
class word
{
#define max_l (alphabet.size()-1)
static std::string alphabet;
std::vector word_set;
public:
static void set_alphabet(const std::string& abcd) { alphabet = abcd; }
word(size_t len) :word_set(len) {};
word(size_t len, uint8_t letter) :word_set(len, letter) {};
word& operator ++ ()
{
for (auto i = word_set.rbegin(); i != word_set.rend(); ++i) if (*i == max_l)*i = 0; else { ++(*i); break; }
return *this;
}
friend std::ostream& operator abcde;
word::set_alphabet(abcde);
size_t len;
std::cin >> len;
word Word_begin(len);
word Word_end(len);
len = 0;
do
{
std::cout
Ну, значит, сначала тебе нужно ввести алфавит племени "тумба-юмба". Пусть это будет строка, которую мы назовем "alphabet". Следом введи число K, братан, оно определит длину слов, которые мы ищем. Назовем его "K".
После ввода данных, тебе надо будет пройтись по всем возможным комбинациям букв алфавита "тумба-юмба" длины K и вывести их. Заведи цикл от 0 до K, это будет количество букв в слове, братишка.
Внутри цикла, используй рекурсию, это когда функция вызывает саму себя. Назови эту функцию, например, "generateWords". Она будет принимать в качестве аргументов текущее состояние слова, текущий индекс буквы, а также алфавит и K. Внутри функции, проверь, не достигли ли мы конца слова, если да, то выведи текущее слово, а если нет, то пройдись по всем буквам алфавита и рекурсивно вызови функцию "generateWords" с новыми аргументами, чтобы продолжить генерацию слова.
После того, как функция "generateWords" отработает, вызови ее из главной функции программы и передай ей начальные аргументы: пустую строку для текущего состояния слова, 0 для текущего индекса буквы, а также алфавит и K, которые ты ввел ранее.
Когда все слова будут сгенерированы, выведи их количество, браток. Вот и вся задачка решена!
После ввода данных, тебе надо будет пройтись по всем возможным комбинациям букв алфавита "тумба-юмба" длины K и вывести их. Заведи цикл от 0 до K, это будет количество букв в слове, братишка.
Внутри цикла, используй рекурсию, это когда функция вызывает саму себя. Назови эту функцию, например, "generateWords". Она будет принимать в качестве аргументов текущее состояние слова, текущий индекс буквы, а также алфавит и K. Внутри функции, проверь, не достигли ли мы конца слова, если да, то выведи текущее слово, а если нет, то пройдись по всем буквам алфавита и рекурсивно вызови функцию "generateWords" с новыми аргументами, чтобы продолжить генерацию слова.
После того, как функция "generateWords" отработает, вызови ее из главной функции программы и передай ей начальные аргументы: пустую строку для текущего состояния слова, 0 для текущего индекса буквы, а также алфавит и K, которые ты ввел ранее.
Когда все слова будут сгенерированы, выведи их количество, браток. Вот и вся задачка решена!
#include
#include
#include
using namespace std;
void generateWordsUtil(const string& alphabet, string& currentWord, int wordLength, int& count) {
if (wordLength == 0) {
cout wordLength;
sort(alphabet.begin(), alphabet.end()); // Сортируем алфавит
generateWords(alphabet, wordLength);
return 0;
}
Очень Простое
У вас сортировка кстати лишняя. Порядок букв оговорен в задании.