#背包方案 ——整数划分(Acwing900)

    技术2024-05-29  84

    一个正整数 n 可以表示成若干个正整数之和,形如: n=n1+n2+…+nk ,其中 n1≥n2≥…≥nk,k≥1 。

    我们将这样的一种表示称为正整数n的一种划分。

    现在给定一个正整数n,请你求出n共有多少种不同的划分方法。

    输入格式 共一行,包含一个整数n。

    输出格式 共一行,包含一个整数,表示总划分数量。

    由于答案可能很大,输出结果请对 109+7 取模。

    数据范围 1≤n≤1000 输入样例: 5 输出样例: 7

    #include <iostream> #include <algorithm> using namespace std; const int N = 1010, mod = 1e9 + 7; int n; int f[N]; int main() { cin >> n; f[0] = 1; for (int i = 1; i <= n; i ++ ) for (int j = i; j <= n; j ++ ) f[j] = (f[j] + f[j - i]) % mod; cout << f[n] << endl; return 0; }

    很简单的 背包方案 问题,不加以赘述了(没时间)。

    Processed: 0.038, SQL: 9