日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

错排详解及案例

發布時間:2024/4/11 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 错排详解及案例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

錯排詳解及案例

文章目錄

  • 錯排詳解及案例
    • 一、錯排詳解
    • 二、案例
      • 1.年會抽獎
      • 2.三國佚事——巴蜀之危

一、錯排詳解

問題:現有10本書按照順序擺放,現要求重新排列,使得新的書的順序中每一本書都不在原來的位置,求有多少種排列方式?

  • 這個問題推廣一下,就是錯排問題,是組合數學中的問題之一。
  • 考慮一個有n個元素的排列,若一個排列中所有的元素都不在自己原來的位置上,那么這樣的排列就稱為原排列的一個錯排。 n個元素的錯排數記為D(n)。 研究一個排列錯排個數的問題,叫做錯排問題或稱為更列問題
  • OK,現在詳細分析這個問題,我們要的最終結果就是書的編號與所在位置的編號都不相同,在這里,我們把n本書的錯排操作數記為D(n),那n-1本就是D(n-1),n-2本就是D(n-2)啦,下面,我們把放置問題分為兩步(初始位置號與書的編號相同):
  • 第一步:
  • 我們取一本書,書的編號為m,現在這本書就在我們手中,注意,按照題目要求,最開始的時候這本書的位置號也是m號,按照題目要求,我們現在放書時不能放回這個位置m了,而是要選擇其他位置,那么有多少種選擇呢
  • 想一下,總共有n本書,n個位置,現在我手里這本書不能把它放到位置m,那么剩下的n-1個位置我當然就是隨便扔啦,也就是n-1種扔法
  • 好,現在,我選擇了位置k,我決定把手里這本書放到位置k這里,記住這個是位置編號k,那么,我肯定要把原來這里的編號為k的書拿出來,再把這本編號為n的書放進去嘍。所以,現在我們手里的書的編號是k,我們需要對編號為k的書進行討論:
  • 第二步:
  • 我們把手里這本編號為k的書本放到書架,注意,放的過程中我們又面臨兩種情況:
  • 可以想到,此時此刻現在書架上編號m的位置是空著的,所以我們可以選擇放在這個位置上,書的編號為k,位置編號為m,沒錯,滿足題意,這是第一種情況
  • 還有一種就是我不選擇這個空著的位置m,我再重新選擇一個新的位置,我們稱之為第二種情況。下面詳細分析:
  • 第一種情況:
  • 我把這本編號為k的書放到這個編號為m的地址,那現在我們面前是什么狀況呢,就是位置k和位置m的書交換位置,也就是位置號不等于書號,即滿足錯排
  • 總共n個位置,我們只動了m和k這兩個位置,那么剩下的n-2個位置還是紋絲不動,保持一一對應的關系
  • 那么對于剩下的這n-2本書的錯排操作,我們又回到了問題的起點,求n-2本的錯排操作數D(n-2),結合第一步,我們可以得到第一種情況總共有(n-1)*D(n-2)種方法
  • 第二種情況:
  • 我們不選擇這個空著的位置m啦,我們手持這本編號為k的書,我們從除了位置m以及位置k的剩下的n-2個位置中選擇一個位置
  • OK,我們現在開始想,我手里這本書不能放在這個位置m,嗯嗯,除了第一步我們放置的那本書m不用管了,我們還要把手里這本和剩下的n-2本,也就是n-1本,同時又要求手里這本k還不能放到位置m,這是不是就相當于把手里這本加上剩下的n-2本也就是n-1本書進行錯排呢
  • 哇哇哇,想一想,錯排的定義,要求每本書都不能呆在某一個特定位置,是不是剛好符合呢qwq,所以,現在的問題就到了求手里這本和剩下的n-2本總共是n-1本書的錯排操作數,我們記為D(n-1),結合第一步,我們得出這第二種情況共有(n-1)*D(n-1)種方法
  • 好的,現在我們總結兩種情況,結果進行相加,就可以得到遞推公式啦!遞推公式為:D(n)=(n-1)*[D(n-1)+D(n-2)]

二、案例

1.年會抽獎

  • 問題描述

今年公司年會的獎品特別給力,但獲獎的規矩卻很奇葩:

  • 首先,所有人員都將一張寫有自己名字的字條放入抽獎箱中;
  • 待所有字條加入完畢,每人從箱中取一個字條;
  • 如果抽到的字條上寫的就是自己的名字,那么“恭喜你,中獎了!”
    現在告訴你參加晚會的人數,請你計算有多少概率會出現無人獲獎?
  • 輸入描述

    輸入包含多組數據,每組數據包含一個正整數n(2≤n≤20)。

    輸出描述

    對應每一組數據,以“xx.xx%”的格式輸出發生無人獲獎的概率。

    示例1

    輸入 2輸出 50.00%
    • 代碼
    #include<iostream> using namespace std;double luck(double n) {if(n == 1 || n == 2){return n - 1;}return ((n - 1)*(luck(n - 1) + luck(n - 2))); }int main() {double n;while (cin >> n){//錯排的方案數double lu = luck(n);//總的方案數double all = 1;for (double i = 1;i <= n;++i){all *= i;}//概率lu = lu / all*100;printf("%.2f%%\n", lu);}return 0; }

    2.三國佚事——巴蜀之危

    • 問題描述

    話說天下大勢,分久必合,合久必分。。。卻道那魏蜀吳三國鼎力之時,多少英雄豪杰以熱血譜寫那千古之絕唱。古人誠不我欺,確是應了那句“一將功成萬骨枯”。
    是夜,明月高懸。諸葛丞相輕搖羽扇,一臉愁苦。原來是日前蜀國戰事吃緊,丞相徹夜未眠,奮筆急書,于每個烽火臺寫下安排書信。可想,這戰事多變,丞相運籌 帷幄,給諸多烽火臺定下不同計策,卻也實屬不易。

    誰成想這送信小廝竟投靠曹操,給諸葛丞相暗中使壞。這小廝將每封書信都投錯了烽火臺,居然沒有一封是對的。不多時小廝便被抓住,前后之事卻也明朗。這可急壞了諸葛丞相,這書信傳錯,勢必會讓蜀軍自亂陣腳,不攻自破啊! 諸葛丞相現在想知道被這小廝一亂,這書信傳錯共有多少種情況。

    Input

    題目有多組數據,處理到文件結尾,丞相共寫了n(1 <= n <= 20)封書信,輸入一個正數n。

    Output

    輸出書信傳錯的情況數。 Sample Input1 3 6 Sample Output0 2 265 #include <stdio.h> typedef long long LL;LL f[50] ; int main() {f[0] = 0 ;f[1] = 0 ;f[2] = 1 ;int n ;for(int i = 3 ;i<= 20 ; i++){f[i] = (i - 1) * (f[i - 1] + f[i - 2]) ;}while(~scanf("%d",&n)){printf("%lld\n",f[n]);}return 0 ; }

    總結

    以上是生活随笔為你收集整理的错排详解及案例的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。