演算法幾個數之和是某個數

dongyu2013發表於2014-04-18

輸入兩個整數  n  和  m,從數列 1,2,3.......n  中  隨意取幾個數,
使其和等於  m ,要求將其中所有的可能組合列出來


n小於m/2

點選(此處)摺疊或開啟

  1. vector<int> list1; //01揹包問題

  2. void find_factor(int sum, int n)
  3. {
  4.    if(n<=0||sum<0)
  5.    {
  6.      return;
  7.    }
  8.    if( sum==0 )
  9.    {
  10.        for(vector<int>::iterator iter=list1.begin(); iter<list1.end()-1; iter++)
  11.        {
  12.          cout<<*iter<<\"+\";
  13.        }
  14.      cout<<*iter++;
  15.      cout<<endl; //後置++的運算子的優先順序高於*
  16.      return;
  17.    }
  18.    list1.push_back(n);
  19.    find_factor(sum-n, n-1);
  20.    list1.pop_back();
  21.    find_factor(sum, n-1);
  22. }

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29012686/viewspace-1144537/,如需轉載,請註明出處,否則將追究法律責任。

相關文章