错排与组合数

所谓错排便是每一个数的都不会出现在原先排列的位置,如原排列1234中便不会出现1342这种错排,因为1的位置还是在原排列的位置之中。有公式

错排.png

其中有D1=0,D2=1 。
公式推导如下:
1.在n个数中将其中一个数k放到除它位置外的可能有(n-1)个可能。(设它放在位置m上)
2.那么m位置上的数便有两种情况,有可能在前一个数的位置上和不可能在前一个数的位置上,而对于第一种的可能结果有(n-1)种,后面有(n-2)种可能。
那不难得到错排的可能性如上公式所述。
而组合数,便是能够从n个数中挑出其中的m个数(n>m),第一个数有n个位置选择,第二个数有(n-1)个位置选择,直到m个数有(n-m+1)个位置选择。那么可能结果便为(n-m+1)到n的乘积。然而这个却是有序的排列,若要做到无序排列,还得在所选m个数中在进行一次排列组合,即m!的可能性。可得知无序排列为
n!/【m!(n-m)!】
我们可以从oj-2068来掌握这两种方法。
题目链接:RPG的错排
2068.png

题目要求找出一半以上即为成功,即奇数在整形除2时要多出1。有n个女生,那么找出k个女生即可的可能答案,将k直到n的可能组合一一算出,在中间的每种可能中又有一个对应的错排,那么2者得到的乘积之和在加上1便是最后的答案。因在错排计算中,若全部选中的,错排为0,但又有全部选中这一可能性,故而要还上这一可能性。
第一个便是组合数的计算,但就算使用了long的整形,在21!之上便开始溢出,那么便要对公式 n!/【m!
(n-m)!】进行变换,即为[(n-m+1)...n]/(n-m)!。
第二个便是将错排的结果求出,这个并没有多大问题。

import java.util.*;
public class Main{
    public static void main (String[] args) {
        long[] d = new long [26];
        d[1]=0;     d[2]=1;
        int i;
        for(i=3;i<26;i++) {
            d[i]=(i-1)*(d[i-1]+d[i-2]);
        }   //错排的计算
        Scanner scan = new Scanner(System.in);
        while(scan.hasNextInt()) {
            int n=scan.nextInt();
            if(n==0)break;
            int k;
            long sum=0;
            k=n/2;
            if(n%2==1) k++;     //奇数的一半以上
            for(i=k;i<=n;i++) {
                sum = sum+d[n-i]*jie(i,n);
            }
            System.out.println(sum+1);
        }
    }
    //组合数的计算
    public static long jie(int i,int n) {
        long k=0,sum2=1,sum3=1;
        if(n==i) k = 1;
        else {
        for(k=i+1;k<=n;k++) {
            sum2 *= k;
        }
        for(k=1;k<=n-i;k++) {
            sum3 *= k;
        }
        k=sum2/sum3;}
        return k;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,561评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,218评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,162评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,470评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,550评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,806评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,951评论 3 407
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,712评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,166评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,510评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,643评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,306评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,930评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,745评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,983评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,351评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,509评论 2 348

推荐阅读更多精彩内容