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<
}
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
全站熱搜
留言列表