整数划分问题的升级版,记录的同时分享一下算法
我对着硅谷发誓,本文原创!
Question
任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和,当n等于5时有6种拆分方法:
5=1+1+1+1+1
5=1+1+1+2
5=1+1+3
5=1+2+2
5=1+4
5=2+3
PS.本题不包含n=n这种情况
input
一行包含一个正整数n(1<n<10)。
output
先将拆分方案输出,然后再输出拆分的方案数。
test
input
5
output
5=1+1+1+1+1
5=1+1+1+2
5=1+1+3
5=1+2+2
5=1+4
5=2+3
total=6
Think
(递归算法,n<10不会超时)
深搜函数:void dfs(int min,int sum,string head)
参数解析
min:算式中最小的一个数为几
(比如min=2时,1+2就会被屏蔽,避免出现2+1+2和1+