标签:
看到这道题第一眼 就是感觉找规律。。
可还是想了好久 。。。。
如果搬家三次和搬家依次一样 那么必是A->B,B->A类型的
剩下就是递推
可以这样想 如果f[n-1]=x
那么在n时我们可以考虑:
如果加了第n个人我们不用他 那么总数为f[n-1]
如果我们用了第n个人 共有n-1个人可以和他结合总数为(n-1)*f[n-2]
所以公式f[n]=f[n-1]+(n-1)*f[n-2]
#include <stdio.h>
long long f[1000000+5];
int main()
{
f[1]=1;f[2]=2;
for(int i=3;i<1000000+1;i++)
f[i]=(f[i-1]+(i-1)*f[i-2])%1000000007;
int ncase;
int t=1;
scanf("%d",&ncase);
while(ncase--)
{
int n;
scanf("%d",&n);
printf("Case #%d:\n%d\n",t++,f[n]);
}
} 标签:
原文地址:http://blog.csdn.net/su20145104009/article/details/51355465