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)²

0 0