void function(vector<int> vecS,vector<int> vecD,vector< vector<int> > & vecGroup,int iSum)
{
for(vector<int>::iterator itr = vecS.begin(); itr != vecS.end(); ++itr)
{
if(iSum - *itr == 0)
{
vecD.push_back(*itr);
// 去掉重复组合 ----------------
vector<int> vecTemp(vecD.begin(),vecD.end());
sort(vecTemp.begin(),vecTemp.end());
vector< vector<int> >::iterator iter = find(vecGroup.begin(),vecGroup.end(),vecTemp);
if(iter == vecGroup.end())
{
vecGroup.push_back(vecTemp);
}
// 去掉重复组合 ----------------
vecD.pop_back();
}
else
{
vecD.push_back(*itr);
vector<int> vecTemp(vecS.begin(),vecS.end());
vector<int>::iterator it = find(vecTemp.begin(),vecTemp.end(),*itr);
vecTemp.erase(it);
function(vecTemp,vecD,vecGroup,iSum - *itr);
vecD.pop_back();
}
}
}
但是效率实在是太低了。。。。