标签:
看到这道题第一眼 就是感觉找规律。。
可还是想了好久 。。。。
如果搬家三次和搬家依次一样 那么必是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