题目描述
一个正整数可以划分为多个正整数的和,比如n=3时:
3;1+2;1+1+1;
共有三种划分方法。
给出一个正整数,问有多少种划分方法。
输入
一个正整数n
数据规模和约定
n< =100
输出
一个正整数,表示划分方案数
样例输入
3
样例输出
3
解题思路:
#include <iostream>
using namespace std;
const int N = 110;
int dp[N][N];int main() {int n;cin >> n;dp[0][0] = 1;for (int i = 1; i <= n; i++)for (int j = 1; j <= i && j <= n ; j++)dp[i][j] = dp[i - j][j] + dp[i - 1][j - 1];int ans = 0;for (int i = 1; i <= n; i++) {ans += dp[n][i];}cout << ans << endl;return 0;
}