:warning: math/partition_function.hpp

Code

//nをk個以下自然数の和で表す
template<typename T>
vector<vector<T>> partition_function(int n){
    vector<vector<T>> dp(n+1,vector<T>(n+1,0));
    dp[0][0]=1;
    for(int i=0;i<=n;++i)for(int j=1;j<=n;++j){
        if(i-j>=0)dp[i][j]=dp[i][j-1]+dp[i-j][j];
        else dp[i][j]=dp[i][j-1];
    }
    return dp;
}
#line 1 "math/partition_function.hpp"
//nをk個以下自然数の和で表す
template<typename T>
vector<vector<T>> partition_function(int n){
    vector<vector<T>> dp(n+1,vector<T>(n+1,0));
    dp[0][0]=1;
    for(int i=0;i<=n;++i)for(int j=1;j<=n;++j){
        if(i-j>=0)dp[i][j]=dp[i][j-1]+dp[i-j][j];
        else dp[i][j]=dp[i][j-1];
    }
    return dp;
}
Back to top page