uva 1645 count 水题

来源:互联网 发布:淘宝客服发票话术 编辑:程序博客网 时间:2024/05/21 09:52


题意 输入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;}


原创粉丝点击