输入样例
5
输出样例
7
这道题想明白还是很简单的,将整数划分问题等价于向n个盘子里装n个苹果。
AC代码
#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int a[60][60];
int fun(int n, int m){
if(a[n][m]) return a[n][m];
if(m <= 0) return 0;
if(!n) return 1;
if(m > n) a[n][m] = fun(n, n);
else a[n][m] = fun(n - m, m) + fun(n, m - 1);
return a[n][m];
}
int main(){
int n;
memset(a, 0, sizeof(a));
while(cin >> n){
cout << fun(n, n) << endl;
}
return 0;
}