【发布时间】:2021-12-13 09:35:38
【问题描述】:
假设我得到了字符串“abc”、“def”和“ghi”,我想生成从这些字符串中挑选出来的所有可能的单词组合。例如 对于“abc”、“def”和“ghi”
我们应该得到
"adg","adh","adi","aeg","aeh","aei","afg","afh","afi", "bdg","bdh","bdi","beg","beh","bei","bfg","bfh","bfi", "cdg","cdh","cdi","ceg","ceh","cei","cfg","cfh","cfi"
怎么做。
我的尝试...
vector<string> wordset;
for(int i = 0; i < digits.size(); i++ )
{
wordset.push_back( latters[digits[i] - '0'] );
}
for(int i = 0; i < wordset.size()-2; i++ )
{
string word = wordset[i];
for(int j = 0; j < word.size(); j++ )
{
string combn = "";
combn += word[j];
for(int k = 0; k < wordset[i+1].size(); k++ )
{
combn += wordset[i+1][k];
for(int l = 0; l < wordset[i+2].size(); l++ )
{
combn += wordset[i+2][l];
ans.push_back(combn);
combn = "";
combn += word[j];
combn += wordset[i+1][k];
}
}
}
}
【问题讨论】:
-
您的尝试有什么问题?请出示minimal reproducible example
-
如果希望
wordset的大小是可变的,递归会很有帮助... -
不是排列而是cartesian product.