组合数学 - 全错位排序公式
不容易系列之一
做好“一件”事情尚且不易,若想永远成功而总从不失败,那更是难上加难了,就像花钱总是比挣钱容易的道理一样。
话虽这样说,我还是要告诉大家,要想失败到一定程度也是不容易的。比如,我高中的时候,就有一个神奇的女生,在英语考试的时候,竟然把40个单项选择题全部做错了!大家都学过概率论,应该知道出现这种情况的概率,所以至今我都觉得这是一件神奇的事情。如果套用一句经典的评语,我们可以这样总结:一个人做错一道选择题并不难,难的是全部做错,一个不对。
不幸的是,这种小概率事件又发生了,而且就在我们身边:
事情是这样的——HDU有个网名叫做8006的男性同学,结交网友无数,最近该同学玩起了浪漫,同时给n个网友每人写了一封信,这都没什么,要命的是,他竟然把所有的信都装错了信封!注意了,是全部装错哟!
现在的问题是:请大家帮可怜的8006同学计算一下,一共有多少种可能的错误方式呢?
Mean:
略
analyse:
就是错排公式的简单运用。下面来了解一下错排公式。
所谓错排就是全错位排序公式,即被著名数学家欧拉(Leonhard Euler,1707-1783)称为组合数论的一个妙题的“装错信封问题”,他求解这样的问题:
一个人写了n封不同的信及相应的n个不同的信封,他把这n封信都装错了信封,问都装错信封的装法有多少种?
递推公式:f(n)=(n-1) * {f(n-1)+f(n-2)}
Time complexity:O(n)
Source code:
// Memory Time
// 1347K 0MS
// by : Snarl_jsb
// 2014-09-15-21.27
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<vector>
#include<queue>
#include<stack>
#include<map>
#include<string>
#include<climits>
#include<cmath>
#define N 1000010
#define LL long long
using namespace std;
long long a[N];
void cuopai(long long n) Formula : f(n)=(n-1)*{f(n-1)+f(n-2)} ;
{
a[1]=0,a[2]=1;
for(long long i=3;i<=n;i++)
{
a[i]=(i-1)*(a[i-1]+a[i-2]);
}
}
int main()
{
// freopen("C:\\Users\\ASUS\\Desktop\\cin.cpp","r",stdin);
// freopen("C:\\Users\\ASUS\\Desktop\\cout.cpp","w",stdout);
cuopai(30);
int n;
while(cin>>n)
{
cout<<a[n]<<endl;
}
return 0;
}
组合数学 - 全错位排序公式相关推荐
- One Day One Step 之全错位排序
One Day One Step 之全错位排序 今天做了一道题,是关于全错位排序的.在高中的时候,对排列组合一直很头痛,所以今天趁这个机会,好好学习学习! 先来看一下题目吧! 神.上帝以及老天爷 ...
- 经典算法题:全错位排列问题
问题描述 这是一个很经典的数学问题:有一个人写了n封信件,对应n个信封,然而粗心的秘书却把所有信件都装错了信封,那么一共有多少种装错的装法? 数学抽象 这个问题可抽象为以下一个数学问题:已知一个长度为 ...
- hdu2048 全错位排序问题
hdu2048是全错位排序的题目!欧拉给我们证明了可以直接套用公式 f(n)= nf(n-1)+(-1)^(n-2) 或 nf(n-1)+(-1)^(n) n ...
- 全错位排列与部分错位排列(组合数学)
全错位排列 基本简介 "装错信封问题"是由当时最有名的数学家约翰·伯努利(Johann Bernoulli,1667-1748)的儿子丹尼尔·伯努利(DanidBernoulli, ...
- NYOJ 912 领帽子(全错位排列)
领帽子 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 有n个人在参加晚会时寄存了自己的帽子.可是保管人忘记放寄存号,当每个人领取帽子时,他只能随机选择一顶帽子交给寄存人 ...
- 全错位排列 配对概率问题
全错位排列 先看下面例子: 例1 5个人站成一排,其中甲不站第一位,乙不站第二位,共有多少种不同的站法. 这个问题在高中很多参考书上都有,有几种解法,其中一解法是用排除法: 先考虑5个有的 ...
- 神、上帝以及老天爷(错位排序)
Description 协会活动为了活跃气氛,组织者举行了一个别开生面.奖品丰厚的抽奖活动,这个活动的具体要求是这样的: 首先,所有参加晚会的人员都将一张写有自己名字的字条放入抽奖箱中: 然后,待所有 ...
- 读论文之《基于 FPGA 的并行全比较排序算法》
为什么介绍这种排序算法:最近在独立编写霍夫曼编码的verilog HDL设计程序,其中用到了排序模块,对一组数据进行排序,苦寻几天,最终找到了这个全新的适合硬件实现的排序算法,分享与此,以空间换时间的 ...
- 基于 FPGA 的并行全比较排序算法,topK
以空间换时间的并行排序算法. https://blog.csdn.net/Reborn_Lee/article/details/80469391 并行全比较排序算法介绍 排序是一种重要的数据运算,传统 ...
最新文章
- PhpMyAdmin的简单安装和一个mysql到Redis迁移的简单例子
- 皮纹生物识别多元智力测量的科学原理
- IN-12辉光数码管:俄罗斯进口的器件
- UIControl IOS控件编程 及UITextField的讲解
- 发展农业对话国际农民丰收节贸易会 菲律宾学中国还是印度?
- 昨日我是谁,今日谁是我
- Android NDK各版本下载
- 阿里云数据湖解决方案全面满足数据需求,帮助企业释放数据价值
- 安卓bmi项目_搭载安卓系统的智能健康一体机:上禾SH-V20
- 华为android强刷系统下载地址,华为P6S官方rom固件刷机包下载_华为P6S原版系统强刷升级包...
- 在Word中使用Quick Parts功能
- Android如何判断输入框是否为空
- 关于添加文件删除权限
- 领扣(LeetCode)最长和谐子序列 个人题解
- POJO类与javaBean类的区别
- python爬虫cookie
- 去除xp桌面图标阴影
- contest 12.31
- Python用正则表达式根据格式匹配成语,如:AABB,AABC,ABAC......
- 鸡啄米:C++编程入门系列之二(原码、反码与补码)
热门文章
- 考试酷解析——C4_Scope of a Variable
- 超分辨率重建之SRCNN整理总结(三)
- Microsoft Visual Studio 2010 下载及学习资料大全
- 如何上好一堂乐高课?知乎上最多赞的回答。
- 苹果M1 Pro和M1 Max的区别
- 使用TXT导出文件夹下所有文件名!
- 论文阅读DefectNet: Toward Fast and Effective Defect Detection缺陷网:走向快速有效的缺陷检测
- 零基础小白浅谈达梦数据库DCA考级分享
- 4.前端开发工具介绍以及下载使用
- 有监督 无监督 自监督 半监督 弱监督