我的此功能crossword
包含参数word
,array
,store
和nElem
。此函数应该在纵横字谜样式中将字符串从word
传输到字符的2D array
,如果字符串不能放在2d数组中或者不包含在内,则应将其存储到数组store
。
示例输入:
hello, look, okay, book, keep, cat
示例输出:
h e l l o
o k e e p
o a
k y
not included is/are
book
cat
首先,我根据字符串的长度按降序排列字符串列表。 (通过函数调用sortWords
)然后,我最初将第一个/最长的单词水平放置在2D数组上。我不知道如何以这种方式放置或存储留在2D数组中的单词。
这是我到目前为止所拥有的:
void crossword(string15 word[], char array[][ATABLE], string15 store[], int nElem)
{
int i, j, k, l;
sortWords(word, nElem);
for(i=0; i<strlen(word[0]); i++)
array[0][i]=word[0][i]; //place first word horizontally in the 2d array
for(j=1; j<nElem; j++)
{
for(k=0; k<strlen(word[0]); k++)
{
if(word[j][0]==word[0][k])
{
for(l=1; l<strlen(word[j]); l++)
array[l][k]=word[j][l];
}
}
}
}
自上周以来,我每天都试图解决这个问题但我没有那么远。我想到的并不是很好,因为它是一种蛮力的方法。对算法的任何建议?只要它生成填字游戏,它就不一定非常好。所有答案都将被赞赏x