深搜做法:
#include<iostream>
using namespace std;
int n;
int res = 0;
void divide(int n,int start)//n-1
{
if (n == 0) {
res++;
return;
}
for (int i = n;i>=1; i--)
{
if(i<=start)
divide(n - i,i);
}
}
int main()
{
scanf("%d", &n);
divide(n,n);
printf("%d", res);
return 0;
}
平台时间限制不严或者测试点不是很大的话这样写能过,但稍微严一点就会超时,