ZCMU - 2117: 数的划分

题目链接(计数版):点击打开链接


题目大意:


解题思路:


附加题目(组合版):点击打开链接


AC 代码(计数版)

#include

#define mem(a,b) memset(a,b,sizeof a);

using namespace std;

typedef long long ll;

//const int maxn=2e8;
int vis[110],mp[110][110];

int solve(int m,int n)
{
    if(mp[m][n]!=0)
        return mp[m][n];

    if(n<=1 || m<=1)
        return mp[m][n]=1;
    else if(m<=n)
        return mp[m][n]=1+solve(m,m-1);
    else
        return mp[m][n]=solve(m-n,n)+solve(m,n-1);
}

int main()
{
    for(int i=1;i<=100;i++)
    {
        vis[i]=solve(i,i);
    }
    int n;
    while(~scanf("%d",&n))
    {
        printf("%d\n",vis[n]);
    }

    return 0;
}

你可能感兴趣的:(#,ACM,#,ZCMU,#,DFS)