裝錯信封問題c語言,裝錯信封問題c語言怎麼辦

本文目錄一覽:

用C++數組解

由於已經給出遞推公式,那這個代碼的實現其實很簡單,如以下代碼

int D[11];

D[1] = 0;

D[2] = 1;

for (int i = 3; i = 10; ++i) {

    D[i] = (i – 1) * (D[i – 1] + D[i – 2]);

}

定義一個數組,初始化前兩位,然後再根據公式迭代計算

組合問題

這個是裝錯信封類的變題

為方便,我們先把n個不同的元素及相應的位置都編上序號1,2,…,n,並且約定:在n個不同元素的排列中

1°若編號為i(i=1,2,…,n)的元素排在第i個位置,則稱元素i在原位;否則稱元素i不在原位.

2°若所有的元素都不在原位,則稱這種排列為n個不同元素的一個錯排(若每個元素都在原位則稱為序排).

按照上面約定,“裝錯信封問題”即為n個不同元素的錯排問題,則可構建“裝錯信封問題”的數學模型為

在n個不同元素的全排列中,有多少種不同的錯排?

3 模型求解

應用集合中的容斥原理,我們就可得到“裝錯信封問題”的數學模型的求解公式.

設I表示n個不同元素的全排列的集合

Ai(i=1,2,…,n)為元素i在原位的排列的集合

Ai∩Aj(1≤i<j≤n)為元素i與j在原位的排列的集合……

A1∩A2∩…∩An為n個元素的序排的集合.

則它們的排列數(即各個集合中元素的個數)分別為

|I|=n!

|Ai|=(n-1)!

|Ai∩Aj|=(n-2)!

……

……

|A1∩A2∩…∩An|=(n-n)!=0!

根據容斥原理即得“裝錯信封問題”的數學模型的求解公式(即n個不同元素的錯排數)為f(n) = n![1-1/1!+1/2!-1/3!+……+(-1)^n*1/n!]

f(5)=44

有44種錯放法

c語言問題 伯努利裝錯信封問題

全排列的篩選

#includestdio.h

#includestdlib.h

int printed;

void draw(int* a,int k)

{

    int i;

    for(i=0;ik;i++)

    {

        printf(“%d”,a[i]);

    }

    printf(“\n”);

}

void Settle(int *a,int iStep,int k)

{  

    int i;

    for(i=0;iiStep-1;i++)

        if(a[iStep-1]==a[i]) return;

    if(iStep==k) 

    {

draw(a,k);

printed++;

    }

    for(i=1;i=k;i++)

    {

if(i==iStep+1) continue;

        a[iStep]=i;

        Settle(a,iStep+1,k);

    }

}

void main()

{

    int* a;

    int k;

    scanf(“%d”,k);

    a=(int*)calloc(k,sizeof(int));

    Settle(a,0,k);

    printf(“s=%d\n”,printed);

}

初中遞歸題

一隻母兔從四歲開始每年生一隻小母兔,按此規律,第N年時有多少只母兔?1、

樓梯有N階,上樓可以一步上一價,也可以一次上二階。編一個程序,計算共有多少種不同的走法。

某人寫了n封信和n個信封,如果所有的信都裝錯了信封。求所有的信都裝錯信封共有多少種不同情況。

有一天小猴子摘若干個桃子,當即吃了一半還覺得不過癮,又多吃了一個。第二天接着吃剩下桃子中的一半,仍覺得不過癮又多吃了一個,以後小猴子都是吃尚存桃子一半多一個。到第10天早上小猴子再去吃桃子的時候,看到只剩下一個桃子。問小猴子第一天共摘下了多少個桃子。

寫一個計算斐波那挈數列的遞歸函數(即後面一項為前兩項之和)。

honoi問題: 設有三個塔座,依次命名為x,y,z。有z個直徑不同的圓盤,由小到大依次編號為1、2、……,n。開始時,它們全部按遞減的次序插在塔座上。現要求按下列規則把n個圓盤按次序插放在z塔座上。

(1)每次只能移動一個圓盤;

(2)圓盤可以從任一個塔座上移到另一個塔座上;

(3)任何時刻都不能把一個較大的圓盤壓在較小的圓盤上。

把M個同樣的蘋果放在N個同樣的盤子里,允許有的盤子空着不放,問共有多少種不同的分法?(用K表示)5,1,1和1,5,1 是同一種分法。

有一棟樓房,假設有100層,我從第100層往下揀錢

每一層的錢等於樓層數 X 10 。例第1層是 1X10 = 10塊錢

求100層我共揀到多少錢?

有一棟樓房,假設有10層。每一次的錢等於,

我從第10層往下揀,當前層的錢 = 以前層累加的錢

X 當前層數-1。問10層樓我共揀多少錢?[可以假設第1層是7塊錢]

c語言題,n封信裝入n個對應信封。問,全部裝錯的情況有幾種。請用for和遞歸兩種方法解決。

#include “stdio.h”

int ans = 0, n;

bool visit[30];

void dfs(int cur) {

  if (cur == n) {

    ++ans;

    return ;

  }

  for (int i = 0; i  n; ++i) {

    if (i == cur || visit[i])

      continue;

    visit[i] = true;

    dfs(cur + 1);

    visit[i] = false;

  }

}

main()

{

  scanf(“%d”, n);

  for (int i = 0; i  n; ++i)

    visit[i] = false;

  for (int i = 1; i  n; ++i) {

    visit[i] = true;

    dfs(1);

    visit[i] = false;

  }

  printf(“%d\n”, ans);

}

n不能太大,不然會運行很久的。

C語言編程題這題咋做啊

分析,假如有N封信和N個信封,

第一步:第一封信,錯誤信封情況:N-1個

第二步:假設與第一封信裝錯的信封為第A個信封,則此步就找第A個信封,與之匹配會出錯的信封有N-1個

第三步(如果N大於2):與第M封信匹配錯誤的信封情況為N-2(M≠1,M≠A)

第四步:假設與第M封信裝錯的信封為第B個信封,則此步就找第B個信封,與之匹配會出錯的信封有N-2個

……一次類推

算法就是(N-1)*(N-1)*(N-2)*(N-2)*…*1*1

自己想出來的,應該是對的,樓主自己測試看看,應該沒錯,代碼就不寫了,很簡單的循環

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/182036.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-24 06:17
下一篇 2024-11-24 06:17

相關推薦

  • Python官網中文版:解決你的編程問題

    Python是一種高級編程語言,它可以用於Web開發、科學計算、人工智能等領域。Python官網中文版提供了全面的資源和教程,可以幫助你入門學習和進一步提高編程技能。 一、Pyth…

    編程 2025-04-29
  • 如何解決WPS保存提示會導致宏不可用的問題

    如果您使用過WPS,可能會碰到在保存的時候提示“文件中含有宏,保存將導致宏不可用”的問題。這個問題是因為WPS在默認情況下不允許保存帶有宏的文件,為了解決這個問題,本篇文章將從多個…

    編程 2025-04-29
  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • Java Thread.start() 執行幾次的相關問題

    Java多線程編程作為Java開發中的重要內容,自然會有很多相關問題。在本篇文章中,我們將以Java Thread.start() 執行幾次為中心,為您介紹這方面的問題及其解決方案…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python爬蟲亂碼問題

    在網絡爬蟲中,經常會遇到中文亂碼問題。雖然Python自帶了編碼轉換功能,但有時候會出現一些比較奇怪的情況。本文章將從多個方面對Python爬蟲亂碼問題進行詳細的闡述,並給出對應的…

    編程 2025-04-29
  • NodeJS 建立TCP連接出現粘包問題

    在TCP/IP協議中,由於TCP是面向字節流的協議,發送方把需要傳輸的數據流按照MSS(Maximum Segment Size,最大報文段長度)來分割成若干個TCP分節,在接收端…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29

發表回復

登錄後才能評論