装错信封问题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/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

发表回复

登录后才能评论