n个有序的元素应有n!个不同的排列,若一个排列使得所有的元素都不在原来位置上,则称这个排列为错排。
错排公式推导
设n个数1,2,3...,n错排数目为Dn,对于其中任意一个数i:
(1) 数i分别与其他的n-1个数交换位置,其余n-2个数进行错排,共得到(n-1)Dn-2个错排;
(2) 对除数i以外的n-1个数进行错排,然后i与其中每个数互换,得到(n-1)Dn-1个错排。
因此,得到递推关系:Dn=(n-1)(Dn-1 + Dn-2),D1=0,D2=1。它的通解为Dn=n!-C(n,1)(n-1)!+C(n,2)(n-2)! - ... +(-)C(n,n)1!。
HDU2048
题意:给出n个元素,求错排的概率。
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
typedef __int64 int64;
const int N = 21;
int64 d[N];
int64 f[N];
int main()
{
int i;
int c,n;
d[1] = 0;
d[2] = 1;
f[1] = 1;
f[2] = 2;
for(i = 3; i < N; i++)
{
d[i] = (i-1)*(d[i-1] + d[i-2]);
f[i] = f[i-1]*i;
}
scanf("%d",&c);
while(c--)
{
scanf("%d",&n);
double p = 1.0*d[n]/f[n]*100.0;
printf("%.2lf%%\n",p);
}
return 0;
}
HDU2068
题意:给出n个元素,求有>=一半的元素在自己的位置的组合数。
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
typedef __int64 int64;
const int N = 15;
int64 d[N];
//c(m,n),m>=n
int64 composite(int64 m, int64 n)
{
int64 i,j;
if(n==0)
return 1;
int64 result = 1;
for(i=m,j=1; j <= n; i--,j++)
result = result*i/j;
return result;
}
int main()
{
int i;
d[1] = 0;
d[2] = 1;
for(i = 3; i < N; i++)
d[i] = (i-1)*(d[i-1]+d[i-2]);
int n;
while(true)
{
scanf("%d",&n);
if(n==0)
break;
int k = n/2;
int64 result = 0;
for(i = 2; i <= k; i++)
result += composite(n,i)*d[i];
printf("%I64d\n",result+1);
}
return 0;
}
分享到:
相关推荐
### 分形几何——数学基础及其应用 #### 一、引言 分形几何是一门研究不规则几何形状的数学分支,这些形状具有自相似性、分数维数等特性。本书《分形几何——数学基础及其应用》(第二版)由英国数学家Kenneth ...
组合数学是数学的一个重要分支,...总之,卢开澄所著的《组合数学》一书是组合数学领域的宝贵资料,它不仅为学生和研究人员提供理论基础,而且通过实际应用案例,展示了组合数学在解决复杂问题时的实用价值和美妙之处。
北邮——计算机——数学建模——专业选修 北邮——计算机——数学建模——专业选修 北邮——计算机——数学建模——专业选修 北邮——计算机——数学建模——专业选修 北邮——计算机——数学建模——专业选修 北邮...
计算机系教材,许多大学的指定考试书目,相信还是很有用的,我也是费劲找到的
在《组合理论及其应用》一书中,李凡长教授可能会深入讲解组合构造、计数原则、图论、设计理论、编码理论等与组合数学密切相关的重要主题。学生在课后通过解决这些习题,可以将抽象的理论知识与实际应用相结合,学习...
算法设计需要估算计算量和存储量。组合数学研究计数和枚举的方法和理论。
模糊数学——模糊矩阵运算PPT学习教案.pptx
青岛版的《五年级数学下册》第四单元“啤酒生产中的数学——比例 比例的应用”教案,就是这样一个例子。本单元以啤酒生产为主题,深入浅出地将数学中的比例知识融入其中,让学生在了解啤酒生产过程的同时,掌握正...
离散数学——求集合;soursecode离散数学——求集合;soursecode离散数学——求集合;soursecode离散数学——求集合;soursecode离散数学——求集合;soursecode离散数学——求集合;soursecode离散数学——求集合;sourse...
**组合数学及其算法** 组合数学是一门研究有限集合中元素排列、组合以及各种计数问题的数学分支。在计算机科学中,它具有极其重要的地位,因为很多算法设计和复杂性分析都离不开组合数学的理论支持。杨振生教授的...
在数学广角——鸽巢问题的应用能力检测卷中,涉及到多个具体的数学问题,通过实际应用情境来检验学生对鸽巢原理的理解和运用能力。 首先,第一部分是填空题,需要学生直接填写答案。这些问题包括但不限于以下几个...
这个问题可以通过组合数学中的排列组合原理来解决。我们将7个人中的夫妇看作一个整体,然后在剩下的5个独立个体中进行排列,最后考虑夫妇内部的排列方式。类似的,若7个人中有3对夫妇,从中取出6个人的夫妇均不相邻...
《统计学——科学与工程应用》是一门涵盖了统计学基本理论、方法及其在科学与工程领域实际应用的综合性学科。这个配套教学资源包为学生和教师提供了深入学习和理解统计学概念的重要参考资料,旨在帮助他们将统计学...
以下将详细介绍组合数学的一些核心知识点及其在编程中的应用。 1. **组合与排列**:组合是不考虑顺序的选择,例如从n个不同元素中选取k个,表示为C(n, k)或n选k。排列则是考虑顺序的选择,从n个不同元素中选取k个并...
7. 应用问题:组合数学广泛应用于计算机科学、运筹学、统计学、生物学、物理学等领域中的各种实际问题,如编码理论、网络设计、信息检索等。 《组合数学中文第五版》教材在上述各个方面均提供了详尽的讲解,并通过...
常见的题型可能包括证明题、计算题和应用题,覆盖了从基础到高级的组合数学问题。 在哈工程的课程中,可能还会涉及到由潘海为教授讲解的一些深入内容,例如组合恒等式、Stirling数、卡特兰数、拉丁方和完全图的边...
逻辑思维能力在理解和应用组合数学及其算法时至关重要。它涉及分析问题,抽象关键要素,并构建有效的解决方案。在IT领域,逻辑思维能力有助于设计高效的数据结构,比如哈希表、堆和图数据结构,这些都与组合数学密切...
第六章详细讨论了容斥原理及其应用,包括错位排列、禁止位置问题等。此外,还介绍了莫比乌斯反演原理作为容斥原理的推广。 递推关系和生成函数是组合数学中解决序列问题的重要工具。第七章介绍了线性齐次递推关系、...
"离散数学及其应用电子版" 离散数学是数学的一个分支,研究离散结构和离散模型,侧重于研究离散对象之间的关系和规律。离散数学是计算机科学和信息科学的基础,广泛应用于计算机网络、数据库、计算机图形学、人工...
本文档以“基于Python语言的应用数学案例教学——以线性代数为例”为题,探讨了如何通过Python程序语言来实现线性代数知识在实际问题中的应用。 首先,文档明确提出了大数据时代对应用数学教学的新要求。传统的教学...