ACM-数学知识的算法应用
来源:互联网 发布:模拟器软件闪退 编辑:程序博客网 时间:2024/05/30 19:35
ACM-数学知识的算法应用
1.完全错位排序
问题描述:
某人写了 n封信和n个信封,如果所有的信都装错了信封。求所有信都装错了信封共有多少种情况.
问题分析:
公式:S=n!(1-1/1! + 1/2!- 1/3! +1/4! - …… +(-1)^n/n! )
2.集合的划分
问题描述:
设s是一个具有n个元素的集合,s={a1, a2, a3...... an },
现将s划分成K个满足下列条件的子集合s1, s2, ...... sk ,且满足:
1).si≠φ
2).si∩sj=φ (1≤i,j≤k i≠j)
3).s1∪s2∪s3∪…∪sk=s
则称s1, s2, ...... sk是集合s的一个划分。求集合S的k划分。
问题分析:
它相当于把s集合中的n个元素a1,a2......an放入k个(0<k≤n<30)无标号的盒子中,使得没有一个盒子为空。
请你确定n个元素a1 ,a2 ,……,an 放入k个无标号盒子中去的划分数s(n,k)。
先举个例子,设S={1,2,3,4},k=3,不难得出s有6种不同的划分方案,
即划分数s(4,3)=6,具体方案 为:
{1,2}∪{3}∪{4} {1,3}∪{2}∪{4} {1,4}∪{2}∪{3}
{2,3}∪{1}∪{4} {2,4}∪{1}∪{3} {3,4}∪{1}∪{2}
问题归纳:
对任一个元素an,则必然出现以下两种情况:
1.{an}是k个子集中的一个,于是我们只要把a1,a2,……,an-1 划分为k-1子集,便解决了本题,
这种情况下的划分数共有s(n-1,k-1)个;
2.{an}不是k个子集中的一个,则an必与其它的元素构成一个子集。
问题相当于先把a1,a2,……,an-1 划分成k个子集,这种情况下划分数共有s(n-1,k)个;
然后再把元素an加入到k个子集中的任一个中去,共有k种加入方式,
这样对于an的每一种加入方式,都可以使集合划分为k个子集,
因此根据乘法原理,划分数共有k*s (n-1,k)个。
综上得:
s(n,k)=s(n-1,k-1)+k*s(n-1, k) (n>k, k>0)
下面,确定s(n,k)的边界条件,
1.不能把n个元素放进一个空集合中去,即k=0时,s (n,k)=0;
2.也不可能在不允许空盒的情况下把n个元素放进多于n的k个集合中去,即k>n时, s (n,k)=0;
3.把n个元素放进一个集合或把n个元素放进n个集合,方案数显然都是1,即k=1或k=n时,s(n,k)=1。
因此,我们可以得出划分数s(n,k)的递归关系式为:
s(n,k)=0 (n<k)或(k=0)
s(n,k)=1 (k=1)或(k=n)
s(n,k)=s(n-1, k-1)+k*s(n-1, k) (n>k,k>0)
3.三角形的面积公式:
1).已知三角形底a,高h,则 S=ah/2
2).已知三角形三边a,b,c,则
(海伦公式)(p=(a+b+c)/2)
S=√[p(p-a)(p-b)(p-c)]=(1/4)√[(a+b+c)(a+b-c)(a+c-b)(b+c-a)]
3).已知三角形两边a,b,这两边夹角C,则S=1/2 * absinC
4).设三角形三边分别为a、b、c,内切圆半径为r,则三角形面积=(a+b+c)r/2
5).设三角形三边分别为a、b、c,外接圆半径为R,则三角形面积=abc/4R
6). | a b 1 |
S△=1/2 * | c d 1 |
| e f 1 |
| a b 1 |
| c d 1 | 为三阶行列式,此三角形ABC在平面直角坐标系内A(a,b),B(c,d),C(e,f),这里ABC
| e f 1 |
选区取最好按逆时针顺序从右上角开始取,因为这样取得出的结果一般都为正值,
如果不按这个规则取,可能会得到负值,但不要紧,只要取绝对值就可以了,不会影响三角形面积的大小!
7).海伦——秦九韶三角形中线面积公式:
S=√[(Ma+Mb+Mc)*(Mb+Mc-Ma)*(Mc+Ma-Mb)*(Ma+Mb-Mc)]/3
其中Ma,Mb,Mc为三角形的中线长.
8).根据三角函数求面积:
S= ½ab sinC=2R²sinAsinBsinC= a²sinBsinC/2sinA
注:其中R为外切圆半径.
9).根据向量求面积:
S= ½√(|AB|*|AC|)²-(AB*AC)²
- ACM-数学知识的算法应用
- ACM的数学知识体系
- ACM中涉及到的数学知识
- 编程中数学知识的应用
- ACM会用到的一点数学知识
- ACM会用到的一点数学知识
- ACM会用到的一些数学知识
- ACM数学知识体系
- ACM数学知识体系
- ACM会用到的一些数学知识(转alpc01)
- 数学知识及算法
- 其它数学知识及算法
- 算法中常用数学知识
- 数学知识的小小应用在C语言中
- 【Cocos2D学习】Lua——数学知识的基本应用
- ACM中的【数学知识】之【组合数学】(一) Polya定理的简单理解 POJ 1286
- 要学习的数学知识
- 基本的数学知识
- POJ1703 简单的种类并查集
- 容斥定理 hdu2204 Eddy's爱好
- android手机型号等信息
- 在Activity中得到新打开Activity 关闭后返回的数据
- hdu-2112 HDU Today
- ACM-数学知识的算法应用
- HDU3308 LCIS 最长连续上升序列。
- Java出局游戏
- HandlerThread 的用法 和Thread 的区别
- HDU 2063 过山车( 最大匹配 )
- 32位与64位平台
- poj 2528(区间修改+离散化)
- Executor
- VIM命令集合