首页 > 其他 > 详细

给定n个整数和一个整数C,问n个数中那几个数的和等于C。

时间:2015-07-02 17:07:12      阅读:115      评论:0      收藏:0      [点我收藏+]
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();
        }
    }
}

但是效率实在是太低了。。。。

 

给定n个整数和一个整数C,问n个数中那几个数的和等于C。

原文:http://www.cnblogs.com/LeavesSmallAnt/p/4616280.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!