zoukankan      html  css  js  c++  java
  • 计数dp

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

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

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

    输入格式

    共一行,包含一个整数n。

    输出格式

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

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

    数据范围

    1n10001≤n≤1000

    输入样例:

    5
    

    输出样例:

    7


     1 #include <iostream>
     2 using namespace std;
     3 
     4 const int mod = 1e9+7;
     5 const int N = 1010;
     6 
     7 int dp[N];
     8 //完全背包做法
     9 int main(){
    10     int n;cin >> n;
    11     dp[0] = 1;
    12     for(int i = 1;i <= n;++i)
    13         for(int j = i;j <= n;++j)
    14             dp[j] = (dp[j] + dp[j-i]) % mod;
    15     cout << dp[n] << endl;
    16     return 0;
    17 }
    View Code
  • 相关阅读:
    POJ 2486
    奇怪的电梯
    穿越泥地(mud)
    救援行动(save)
    As Fast As Possible
    Connecting Universities
    They Are Everywhere
    Cells Not Under Attack
    吃饭
    花店橱窗(flower)
  • 原文地址:https://www.cnblogs.com/sxq-study/p/12308340.html
Copyright © 2011-2022 走看看