def divide(m,r,out):#m:=max r:=remain
if(r==0):
return 1
m1=r
while m1>0:
if(m1<=m):
out.append(m1)
if(divide(m1,r-m1,out)):
print out
out.pop()
m1-=1
return 0
n=6
#out=[]
divide(n-1,n,out=[])
print out
上面代码输出将是:
[5, 1]
[4, 2]
[4, 1, 1]
[3, 3]
[3, 2, 1]
[3, 1, 1, 1]
[2, 2, 2]
[2, 2, 1, 1]
[2, 1, 1, 1, 1]
[1, 1, 1, 1, 1, 1]
基本上只要用STL里的vector来取代上面的列表out 就能得到相应的c++代码了~