список слов — Создание списка слов в переполнении стека

Я пытаюсь выяснить, как генерировать список слов в C ++ на основе заданной строки символов (аналогично тому, как хруст список слов работает)

Я довольно новичок в C ++ и получил только программу, чтобы перечислить символы по одному за раз.

Я довольно долго искал в интернете, и мне не повезло, кроме того, что я нашел O (n ^ 2) и не очень много представлял, как реализовать его в программе.

Код:

int main() {
string characters = "abcde";

int length = 5;
string word = "";
for(int i = word.length(); i <= length; i++) {
for(int l = 0; l < characters.length(); l++) {
word += characters[l];
cout << word << "\n";
}
}
return 0;
}

Результат:

a
b
c
d
e

Требуемый результат: http://pastebin.com/tgyUtKfA

Фрагмент результата:

a
b
c
d
e
aa
ab
ac
ad
ae
ba
bb
bc
bd
be
ca
cb
cc
cd
ce
da
db
dc
dd
de
ea
eb
ec
ed
ee
aaa

(Окончательный результат следует этому шаблону до «Eeeee»)

1

Решение

#include <string>
#include <vector>
#include <iostream>
using namespace std;

vector<string> make_permutations(int length) {
if (length == 0) {
return vector<string>{};
}
vector<string> results;
vector<string> children = make_permutations(length - 1);
for (char letter = 'a'; letter <= 'z'; letter++) {
results.emplace_back(1, letter);
for(auto child : children) {
results.push_back(std::string(1, letter) + child);
}
}
return results;
}

int main()
{
auto results = make_permutations(2);
for(auto s : results) cout << s << endl;
}

жить: http://melpon.org/wandbox/permlink/gGVAxbVUFVZs4fUR

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]