close

假設我有一段布,布長3公分

我可以將這塊布切成 1段 3公分

                   2段 1公分+2公分 及 2公分+1公分
                       (這兩種組合是不同的組合)

                   3段 1公分+1公分+1公分

共有2^(3-1) =4種組合

若我有一塊布,布長4公分

可以將這塊布切割為 1段 4公分

                   2段 1公分+3公分 2公分+2公分 3公分+1公分
                       (這3種組合是不同的組合)

                   3段 1+1+2  1+2+1  2+1+1

                   4段 1+1+1+1
+++++++++++++++++++++++++++++++++++++++++++
 #include
#include
#include


using namespace std;
string int2str(int &i)
{
  string s;
  stringstream ss(s);
  ss << i;

  return ss.str();
}

void vCut(string  strList,int input, int remainder)
{
 strList.append( int2str(input));

  if( 0 == remainder )
  {
     cout<<  strList<     return;
  }
  else
  {
    strList.append("+");
  }

  for(int j =1; j<= remainder; ++j)
  {
  
    vCut(strList,j,remainder-j);
  } 
}

int main()
{
   int iMaxNumber = 4;
   cout<<"Start "<
   string  strList;

   for(int i =1;i <= iMaxNumber; ++i)
   {
     vCut(strList,i, iMaxNumber-i);
   }
   return 0;
}return
 

arrow
arrow
    全站熱搜

    rangerll 發表在 痞客邦 留言(0) 人氣()