题目:
给定n个数组,从每个数组中取出一个元素,并进行组合,最终返回所有可能的组合。
递归解法:
简单的dfs即可,当深度到达n时,即把当前字符串添加到最终结果中。 代码如下:
1 | void merge1(vector<string> & res, string cur, const vector<vector<char> > &arr, int depth) |
非递归解法
可以用一个队列保存结果信息,每次从队列头取出一个字符串,然后与第i个数组中的每个元素进行组合,然后在压入队列中,注意使用一个#号表示组合完了一个数组。 代码如下:
1 | vector<string> merge2(vector<vector<char> > & arr) |