https://vjudge.net/problem/UVA-1645
题意:有多少个n个节点的有根树,每个深度中所有节点的子节点数相同
dp[i] 节点数为i时的答案
除去根节点还有i-1个点,如果j是i-1的约数,说明能平均分成j棵子树
每棵子树有(i-1)/j个节点,所以可以递推
递推:子问题
#include<cstdio> using namespace std; const int mod=1e9+7; int dp[1001]; int main() { dp[1]=1; for(int i=2;i<=1000;i++) for(int j=1;j<i;j++) if((i-1)%j==0) dp[i]=(dp[i]+dp[(i-1)/j])%mod; int n,t=0; while(scanf("%d",&n)!=EOF) printf("Case %d: %d\n",++t,dp[n]); }