现在的位置: 首页 > 综合 > 正文

从n个数组中任意选取一个元素的所有组合的Java实现(组合问题)

2014年02月14日 ⁄ 综合 ⁄ 共 694字 ⁄ 字号 评论关闭


在這裡,我們用遞歸的思想,對於數據[1, 3, 4]; [2, 5]; [6, 7];我們可以

1.將1,2,6壓入棧中,然後輸出棧中所有元素,之後彈出6
2.壓入7,輸出棧中所有元素,之後彈出7
3.彈出2,壓入5,再壓入6,然後輸出棧中所有元素,之後彈出6
4.壓入7,輸出棧中所有元素,之後彈出7
以此類推,即可得到所有組合。

void get_result_in_vector(Vector<vector<int>> vec,int N,Stack<int> tmp, vector<vector<int>> tmp_result)
{
for(int i=0;i< vec[N].size();++i)
{
tmp.push(vec.get(N).get(i));
if(N<vec.size()-1)
{
get_result_in_vector(vec,N+1,tmp, tmp_result);
}
else
{
vector<int>one_result;
for(inti=0;i<tmp.size();++i)
{
one_result.push(tmp.get(i));
}
tmp_result.push(one_result);
}
tmp.pop();
}
}

void vector<vector<int>> get_all_combination(vector<vector<int>> vec)
{
        Stack<int> tmp_vec;
vector<vector<int>> tmp_result;
get_result_in_vector(vec,0,tmp_vec, tmp_result);

        return tem_result;
}

抱歉!评论已关闭.