错排问题(排列组合习题)

2023-05-16

标题:错排问题

题目描叙:
某人写了n封信和n个信封,如果所有的信都装错了信封。求所有的信都装错信封共有多少种不同情况。
Input
输入n(n <=20)

Output
输出情况总数

Sample Input
2

Sample Output
1
我们一拿到提目就可以知道是有关于排列组合的问题,在看数据n<=20,是个很大的数(除非数据太水)要定 long long类型。
算法分析:
接着我们来算法分析:
设f(n)为n个不同元素的错排方案。
第一部分:n先不动,把另外的n-1个数错排,方案是:f(n-1),然后n和另外的n-1个每一个交换,共有(n-1)*f(n-1)种方案。
第二部分:n和其他的n-1个之一交换,其余的n-2个错排,共有:(n-1)f(n-2)种方案。
由加法原理递推式:
f(n)=(n-1)
(f(n-1)+f(n-2))
边界:
f(1)=0;f(2)=1;
由于本人喜欢将程序分为几个部分来写,所以AC完整代码会放在末尾!!!
输入(input):

void input()
{
	cin>>n;
	f[1]=0;f[2]=1;  //设定边界。 
}

递推(work):

void work() //递推 
{
	for(int i=3;i<=n;i++)
		f[i]=(i-1)*(f[i-1]+f[i-2]); //公式 
} 

输出(output):

void output(){cout<<f[n]<<endl;}

AC完整代码:

#include<cstdio>
#include<iostream>
using namespace std;
long long f[30],n;
void input()
{
	cin>>n;
	f[1]=0;f[2]=1;  
}
void work()
{
	for(int i=3;i<=n;i++)
		f[i]=(i-1)*(f[i-1]+f[i-2]); 
} 
void output(){cout<<f[n]<<endl;}
int main()
{
	input();
	work();
	output(); 
	return 0;
} 

俗话说的好:“条条大路通罗马!”
这里我给大家再提供一个思路:
不解释!(知道的发一下解释)
通项式:

f(n)=n!(1/2!-1/3!+1/4!-1/5!..pow((-1),n)1/n);

谢谢观赏
记得扣点赞加关注!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

错排问题(排列组合习题) 的相关文章

随机推荐

  • yolov5模型框架详解

    yolov5和yolov4很像 Mosaic数据增强 1 每次读取四张图片 2 分别对四张图片进行翻转 缩放 色域变化等 xff0c 并且按照四个方向位置摆好 3 进行图片的组合和框的组合 随机缩放 随机裁剪 随机排布的方式进行拼接 xff
  • detectron2 ImportError: cannot import name ‘_C‘ from ‘detectron2‘

    在detectron2 中执行 python setup py build develop 即可
  • LSTM+attention代码原理详解

    本文将LSTM 43 attention用于时间序列预测 class lstm torch nn Module def init self output size hidden size embed dim sequence length
  • bash: export: not a valid identifier

    export 后面存在空格 xff0c 去掉即可
  • linux安装opencv

    安装 1 准备工作 1 1C C 43 43 编译环境配置 Linux系统下使用C 43 43 开发OPenCV项目 xff0c 先要搭建C C 43 43 开发环境 在终端输入 xff1a sudo apt install gcc sud
  • 模型的并行推理

    ONNX模型可以通过使用深度学习框架的多卡并行化功能来实现GPU多卡推理 以PyTorch为例 xff0c 可以使用DataParallel或DistributedDataParallel来进行多卡并行化 DataParallel可以在单个
  • python队列

    q get 在队列为空时会阻塞 q put 在队列满时会阻塞 get nowait 在队列为空的时候也不阻塞 xff0c 这时候会抛异常queue Empty put nowait 1 在队列满的时候也不阻塞 xff0c 这时候会抛异常qu
  • python queue【队列的阻塞】

    队列的阻塞分为 xff1a 入队 put 时的阻塞 出队 get 时的阻塞 整体 join 的阻塞 消费的阻塞 出队阻塞 注 xff1a 设置 timeout 超时时间 xff0c 并捕捉 queue Empty 异常 xff1b 设置to
  • 微策略春招面试总结

    春季招聘时我报的研发岗 xff0c 由于我不是杭州本地人 xff0c 故首先接到的是电话面试 xff0c 电话面试大概一周左右被通知去杭州总部面试 下面主要简述一下面试的内容 第一面是技术面 xff0c 大概持续近一个小时 首先面试官会照着
  • Java JSONArray for循环 remove成员的一个好算法(转载)

    来源 xff1a https www cnblogs com xiaoliao p 10415214 html parameterArray 61 34 boundingBox 34 34 29 28 401 29 399 85 27 84
  • ExecutorService 关闭 and 如何判断线程池中任务执行完毕

    ExecutorService 关闭 1 shutdown 2 shutdownNow 3 awaitTermination 当你使用 ExecutorService的时候 xff0c 你应该记得关闭它 xff0c 这样这些被管理的线程才会
  • Ubuntu下启动图形界面startx报错connection to X server lost

    服务器被重启之后startx无法进入图形界面 xff0c 训练数据也全丢了 按以前应对这个问题的步骤重新走了一遍还是不行 就是各种网上找的杂七杂八的办法 xff0c 于是想起之前用x2go client登录图形界面ok的 xff0c 然后去
  • C语言环形队列缓冲-FIFO_RingBuffer

    ring buffer h span class token macro property span class token directive hash span span class token directive keyword if
  • [推荐]轻量好用学习python的工具--​-Thonny​

    青少儿编程教育的三大语言 xff0c 图形化编程 Python编程和C 43 43 语言编程 图形化语言 xff08 Scratch xff09 和C 43 43 语言 xff08 Dev C 43 43 xff09 的编程工具相对比较固定
  • Ubuntu 18.04无法打开屏幕共享,sharing按钮无法打开

    Ubuntu 18 04无法打开屏幕共享 xff0c sharing按钮无法打开 问题 xff1a 刚装了Ubuntu 18 04 xff0c 因新版的Ubuntu自带了屏幕共享的功能 xff0c 故尝试打开setting gt shari
  • 基于Web的高校社团管理系统的设计与实现

    该文章记录的是我的毕业设计 该项目运用PHP动态网站开发技术 xff0c 使用ThinkPHP5开源框架 xff0c HTML5 CSS JavaScript等脚本语言 xff0c Web服务器使用Apache xff0c 数据库采用MyS
  • qt在窗口中同步打印日志信息,根据日志级别设置日志颜色

    场景 一般我们会在程序运行的过程中配置对应的日志信息 xff0c 帮助我们了解当前程序执行的进度 当使用qt增加了操作界面时 xff0c 同样需要将日志信息在界面中显示出来 思路 使用qt的QtWidgets QTextEdit 控件作为日
  • pygame 学习笔记(4)推荐一本python入门游戏书籍《PYTHON游戏编程入门》

    简介 PYTHON游戏编程入门 xff08 More Python Programming for the Absolute Beginner xff09 是 S Harbour写的一本入门书籍 xff0c 基于pygame库 本书每一个章
  • MySQL相关知识点(原理、面试、工作)

    MySQL相关常识 返回导航页感谢您的宝贵时间 xff0c 来阅读本文知识点1 xff1a where 和having 原理功能快捷键启动 关闭MySQL服务如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一
  • 错排问题(排列组合习题)

    标题 xff1a 错排问题 题目描叙 xff1a 某人写了n封信和n个信封 如果所有的信都装错了信封 求所有的信都装错信封共有多少种不同情况 Input 输入n xff08 n lt 61 20 xff09 Output 输出情况总数 Sa