n个人n个座位,求不能坐在自己座位上种数
2013-04-04 22:28
288 查看
如果一共有i个人,则第i个人的位置对于其他i-1个人都是合法的,则这i-1个人都可能坐在i的位置上。如果第i个人坐在坐他位置的人的位置上,则将这两个人与其他的i-2个人分开了,有f[i-2]种;如果第i个人不坐在坐他位置的人的位置上,则剩下i-1个人不能坐自己的位置,则有f[i-1]种。
所以递推式为:f[i]=(i-1)*(f[i-1]+f[i-2]);
腾讯2013.3.30号的决赛第一题就是这个题。
#include<stdio.h>
__int64 f[105];
void main()
{
int t;
int n;
int i;
f[1] = 0;
f[2] = 1;
for(i = 3; i <= 100; ++i)
{
f[i] = (i - 1) * (f[i - 1] + f[i -2]);
f[i] %= (__int64)(1e9+7);
}
scanf("%d", &t);
while(t--)
{
scanf("%d", &n);
printf("%lld\n", f
);
}
}
所以递推式为:f[i]=(i-1)*(f[i-1]+f[i-2]);
腾讯2013.3.30号的决赛第一题就是这个题。
#include<stdio.h>
__int64 f[105];
void main()
{
int t;
int n;
int i;
f[1] = 0;
f[2] = 1;
for(i = 3; i <= 100; ++i)
{
f[i] = (i - 1) * (f[i - 1] + f[i -2]);
f[i] %= (__int64)(1e9+7);
}
scanf("%d", &t);
while(t--)
{
scanf("%d", &n);
printf("%lld\n", f
);
}
}
相关文章推荐
- 排座位 要安排:3个A国人,3个B国人,3个C国人坐成一排。 要求不能使连续的3个人是同一个国籍。
- [原创]10个人都不坐在自己座位上有多少种可能机率多大
- 有n个人和n个座位,求都不坐在自己的位置上的种数
- java做一个值日生表。要用到链表,random,list。一共十三个人,四个人一组,最后剩下一个自己一个集合。不能重复
- 排座位 要安排:3个A国人,3个B国人,3个C国人坐成一排。 要求不能使连续的3个人是同一个国籍。
- 排座位 要安排:3个A国人,3个B国人,3个C国人坐成一排。 要求不能使连续的3个人是同一个国籍。 求所有不同方案的总数?
- 自己写了一个js,但是最终不能控制住最后后的提交,前面的还是比较完美,大家看到后,能帮我解决一下吗?
- 项目中个人的作用-找准自己该做什么、该说什么!
- 免费打造自己的个人网站,免费域名、免费空间、FTP、数据库什么的,一个不能少,没钱,也可以这么任性
- 程序员 -- 当我彻底放弃自私自利后,前途变得一片光明,不能过多的只是关注自己的功夫,生活不能只局限在方寸虚拟世界里
- 你就是一个画家!你现在想绘制一幅画,但是你现在没有足够颜色的颜料。为了让问题简单,我们用正整数表示不同颜色的颜料。你知道这幅画需要的n种颜色的颜料,你现在可以去商店购买一些颜料,但是商店不能保证能供应所有颜色的颜料,所以你需要自己混合一些颜料。混合两种不一样的颜色A和颜色B颜料可以产生(A XOR B)这种颜色的颜料(新产生的颜料也可以用作继续混合产生新的颜色,XOR表示异或操作)。本着勤俭节约的
- 【十大堕落的表现】如果堕落了,请收藏提醒自己,不能再这样了......
- 分享8年开发经验,浅谈个人发展经历,明确自己发展方向
- 湖南工业大学个人选拔赛第三场 解题报告(自己的)
- 发了李哥两张照片,不能不发自己的,要看的到我的blog里去看吧,道道
- tiny210运行自己的应用程序不能使用触摸屏的解决方法以及原因猜想
- 若不能细水长流地书写内心的温柔,那轰轰烈烈的一幕一幕不过是日后回忆自己爱无能的证据罢了。
- 我决定不能贱卖自己(2010年11月13日志)
- objective-c中自己创建的对象为什么不能调用release