我正在尝试解决5个字母的单词难题,其中可以包含3个,4个和5个字母的单词。我应该如何编写算法来实现这一目标?
我尝试制作5个嵌套循环以遍历数组的字符,然后添加所有循环,它适用于小单词,但由于时间复杂而崩溃。
const addandlog = (array) => {
for (var i = 0; i < array.length; i++) {
for (var j = 0; j < array.length; j++) {
for (var k = 0; i < array.length; k++) {
console.log(array[i] + array[j] + array[k]);
}
}
}
}
addandlog(['A', 'G', 'R', 'N', 'D']);
我希望输出的是所有可以制作的单词,而不仅仅是字典单词
答案 0 :(得分:2)
您可以采用迭代方法,将需要的项组成一个数组。
int insert_asc(node **phead, int data) {
node *cur;
node *newnode = malloc(sizeof(node));
if (newnode == NULL)
return 0;
newnode->data = data;
cur = *phead;
if (cur == NULL || cur->next == NULL) {
newnode->next = cur;
*phead = newnode;
} else {
while (cur->next != NULL && data < cur->next->data)
cur = cur->next;
newnode->next = cur->next;
cur->next = newnode;
}
return 1;
}
function getWords(letters, length) {
return Array
.from({ length })
.fill(letters)
.reduce((a, b) => a.reduce((r, v) => r.concat(b.map(w => [].concat(v, w))), []))
.map(a => a.join(''))
}
console.log(getWords(['A', 'G', 'R', 'N', 'D'], 5));