uva 1645 count 水题


题意 输入n 统计有多少个n节点的有根树 使每个深度中所有节点的子节点数相同 

例如 n=4 答案是3 n = 7 答案是 10


瞬间想到递推 第一层一定放一个 那么剩下 n-1 个节点 假设放 i 个 在下一层 为了满足 每个深度的所有节点的子节点数 相同 那么 ( n - 1 - i ) % i == 0

根据例子  f ( 4 )  = f ( 3 ) + f ( 1 ) 

f ( 7 )  = f ( 6 )  +  f ( 3 ) + f  ( 2 )  + f ( 1 ) 

 直接打表 输出即可  

#include <bits/stdc++.h>

using namespace std;

long long num[1005]={0};

void init()
{
    int i,j;
    num[1]=num[2]=1;
    for(i=3;i<=1000;i++)
    {
        for(j=i-1;j>0;j--)
        {
            int x=i-1;
            if((x-j)%j==0)
            {
                num[i]+=num[j];
                num[i]%=1000000007;
            }
        }
    }
}

int main()
{
    int i,j,x,y,q,p,n,m;
    init();
    int k=1;
    while(cin>>n)
    {
        cout<<"Case "<<k++<<": "<<num[n]<<endl;
    }
    return 0;
}


猜你喜欢

转载自blog.csdn.net/numberer/article/details/78234137
今日推荐