n个人重新排队,不站在原来位置 - 算法分析
来源:互联网 发布:个人租用阿里云服务器 编辑:程序博客网 时间:2024/06/05 19:43
题目
有n个人排队,原来读顺序为:A B C D E F G……现在进行重新排序,要求每个人不能站在原来的位置上,请问一共有多少种排法?
题解
递推关系式:
分析
当n >= 2时:
首先,只看A,他有n-1个位置可选,并且每个位置上的排序方式都不相同,因为A的位置肯定不同,并且A在n-1个不同的位置上方法数目是相通的。
然后看当A在B的位置上,如果B恰好在A的位置上,那么就是将剩余的n-2个人重新排队,所以方法种类有
所以:
通过递归方法就可以实现了。
伪代码实现
new_order_method(num) if num == 1 then return 0 if num == 2 then return 1 return (num - 1)*(new_order_method(num - 1) + new_order_method(num - 2))
0 0
- n个人重新排队,不站在原来位置 - 算法分析
- 有5个人ABCDE排队,排好后他们决定重新排队,每个人都不在原来的位置上,那么总共有多少种排法
- n个人围成一圈数到m和m的倍数时出圈,问剩下的人是谁?在原来的位置是多少?
- 500个人手拉手,数3退1,求最后一个人原来在那个位置
- 循环链表实现n个人排队,数到m的人退出,下一个人从1重新开始,直到剩下最后一个人
- poj 2828 Buy Tickets(有N个人排队,每一个人都有一个val来对应,每一个后来人都会插入当前队伍的某一个位置pos。)
- 50个人围成一圈数到三和三的倍数时出圈,在原来的位置是多少
- 50个人围成一圈数到三和三的倍数时出圈,在原来的位置是多少?
- 简单算法一个(有N个人,依照顺序报123,数到3的人自动出局,问最后剩下的那个人在原来的队列中排第几)
- 十本不同的书放在书架上。现重新摆放,使每本书都不在原来放的位置。有几种摆法?
- 高精度算法个人分析
- dijkstra算法个人分析
- 50个人围成一圈数到3和3的倍数时出圈,问剩下的人是谁?在原来的位置是多少
- 50个人围成一圈数到三和三的倍数时出圈,问剩下的人是谁?在原来的位置是多少?
- 50个人围成一圈数到3和3的倍数时出圈,问剩下的人是谁?在原来的位置是多少
- 50个人围成一圈数到3和3的倍数时出圈,问剩下的人是谁?在原来的位置是多少(简单易懂)
- java编程题:50个人围成一圈数到3和3的倍数时出圈,问剩下的人是谁,在原来的位置是多少?
- 一个未排序整数数组,有正负数,重新排列使负数排在正数前面,并且要求不改变原来的相对顺序.
- 面向对象继承,接口的实现
- HD 5455 FangFang
- 【笔记】jQuery基础课程(慕课)(上)
- Caused by: java.lang.NoClassDefFoundError: org/apache/neethi/AssertionBuilderFactory
- c语言学习笔记(1)基本数据类型及auto,register,static分析
- n个人重新排队,不站在原来位置 - 算法分析
- 菜鸟-,初学java者
- 单片机篇
- VxWorks基础知识
- 函数指针与指针函数
- netbeans
- 腾讯auth认证
- mysql授权
- testlink和mantis