错位排列的魅力
来源:互联网 发布:web前端后端数据交互 编辑:程序博客网 时间:2024/04/27 09:15
错位排列:即n个有编号的人各自抽不中自己的号码
以下证明其公式为:f(n)=(n-1)*(f(n-1)+f(n-2))
首先是第一个人,称为1号
1号不抽取自己,有(n-1)种抽取方法
假设1号抽中2号
有两种情况:1、2号也抽中了1号,于是剩下n-2个自己进行错位排列,得f(n-2)种
2、2号没有抽中1号,则必有后面的抽中1号,于是此时将2号当作1号,即假设后面抽到的1号是2号,于是又有f(n-1)种
所有可以证得<pre name="code" class="cpp">f(n)=(n-1)*(f(n-1)+f(n-2))
以下是一个应用实例:
hd2048,也是递归思想
#include <stdio.h>int main(void){ int n,i,k,l,a; long long int fb[2],t; double j; scanf("%d",&n); for(k=0;k<n;k++) { scanf("%d",&a); fb[0]=1,fb[1]=2; for(l=3;l<a;l++) { t=fb[1]; fb[1]=(l)*(fb[1]+fb[0]); fb[0]=t; } /*printf("%lld %lld",fb[0],fb[1]);*/ for(i=1,j=1;i<=a;i++) j*=i; if(a==1) printf("%.2f%%\n",100.0); else if(a<4) printf("%.2f%%\n",(double)((int)(fb[a-2]/j*10000+0.5))/100); else printf("%.2f%%\n",(double)((int)(fb[1]/j*10000+0.5))/100); } return 0;}
还有补充一点:
即四舍五入的方法:
(int)(a+0.5)
利用了系统的截断,可以获得四舍五入的数!
1 0
- 错位排列的魅力
- 错位排列
- 错位排列
- 错位排列
- 错位排列-组合
- 全错位排列
- 全错位排列
- 全错位排列
- 全错位排列
- 全错位排列问题
- 全错位排列
- 全错位排列
- 全错位排列
- 高精度和错位排列
- hdu2048 错位排列
- HDOJ2048(错位排列)
- 错位排列-信封问题
- 概率论 --- 对于全错位排列概率公式的证明推导
- Unity3D自学笔记——UGUI背包系统(八)物品的分类与整理
- Semantic Web Technologies: RDFS Inference
- OJ_1186数学公式【在化简分数时调用函数进行化简】【简便方法】
- 基于可靠消息的分布式事务错误处理
- 高并发性能的提升
- 错位排列的魅力
- SQL语句之CASE WHEN
- int 和 Integer 的区别
- Unity3D自学笔记——UGUI背包系统(九)装备对HP影响的逻辑及使用药品
- 【LeetCode】329. Longest Increasing Path in a Matrix (Hard)
- 【Day45】php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
- 定时执行php脚本
- 51nod 1441 士兵的数字游戏
- Intellij/AndroidStudio 类图标的含义