错位排列超详解(组合数学)
错位排列
全错位排列最经典的问题是装错信封问题。
我们把信封问题转换一下:
对于1−n1-n1−n 共n个数字组成的序列中,每个数字仅出现一次,求每个数字跟位置完全不对应的总方案数。
- 对于第一个位置上的数字1它有 n−1n-1n−1 种方案数
- 对于第二个位置上的数字2有两种放法:
①.放到1的位置上:
这时候就是已经把1和2放置好,剩下n−2n-2n−2个位置dp[n−2]dp[n-2]dp[n−2]
②.放到后面n−2n-2n−2个位置上
这种情况其实就转换到了放数字1的情况(只是总数减一)
它就相当于数字1已经放好了 还剩下n−1n-1n−1个位置和n−1n-1n−1个数,数字2不能在位置1处,也就是dp[n−1]dp[n-1]dp[n−1]的状态。
初始化状态:dp[1]=0(只有一个数字),dp[2]=1(两个数字)dp[1]=0(只有一个数字),dp[2]=1(两个数字)dp[1]=0(只有一个数字),dp[2]=1(两个数字)
转移 :第i个数有i−1i-1i−1种方案,会转移到两种状态。
dp[i]=(i−1)∗(dp[i−1]+dp[i−2]);dp[i]=(i-1)*(dp[i-1]+dp[i-2]);dp[i]=(i−1)∗(dp[i−1]+dp[i−2]);
实现代码:dp[i]表示i个数错位排列的方案数dp[i]表示i个数错位排列的方案数dp[i]表示i个数错位排列的方案数
dp[1] = 0; dp[2] = 1;for(int i=3; i<=maxn; i++){dp[i] = (i-1) * (dp[i-1] + dp[i-2]) % mod;}
错位排列超详解(组合数学)相关推荐
- Android vector标签 PathData 画图超详解
此文章来源于https://www.cnblogs.com/yuhanghzsd/p/5466846.html点击打开链接 Android vector标签 PathData 画图超详解 SVG是一种 ...
- Mybatis案例超详解
Mybatis案例超详解 前言: 本来是想像之前一样继续跟新Mybatis,但由于种种原因,迟迟没有更新,快开学了,学了一个暑假,博客也更新了不少,我觉得我得缓缓,先整合一些案例练练,等我再成熟点理解 ...
- python控制手机模拟器_Appium+python自动化之连接模拟器并启动淘宝APP(超详解)...
简介 上一篇讲解完模拟器的安装.配置好以后,就好比我们手机已经买好,并且系统已经做好了,就差我们用数据线和电脑连接开始实战了,这篇宏哥就带着小伙伴们和童鞋们趁热打铁,讲解和分享一下如何连接模拟器(电脑 ...
- js打印三角形超详解
js打印三角形超详解 j控制星星的总行数,i控制每行星星的打印个数 打印图形如下: (1) (2) //str=""用来存储星星// 理解步骤1:在一行输出6个星星如何操作,在循环 ...
- 线性规划之单纯形法【超详解+图解】-转载
线性规划之单纯形法[超详解+图解] 目录 1.作用 2.线性规划的一般形式 5.1几何意义 5.2如何判断最优 5.3如何选择新的基变量 5.4如何选择被替换的基变量 5.5终止条件 标准型: 转化为 ...
- 【平衡小车制作】(七)串级PID调参及平衡成果展示(超详解)
大家好,我是小政.本篇文章我将针对PID调参进行详细的讲解,让每位小伙伴能够对比例.积分.微分三个参数如何调节有更加清晰的理解. 一.调参步骤 确立机械中值 直立环(内环)--Kp极性.Kp大小. ...
- 面试-Java【之】(revers)递归实现字符串倒序排列(详解)
面试-Java[之](revers)递归实现字符串倒序排列(详解) 实现源码详解 <目录:Java-JDBC学习> <幕> 实现源码详解 public class Test { ...
- 蓝牙模块XY-MBD07A的介绍及使用方法(超详解)
蓝牙模块XY-MBD07A的介绍及使用方法(超详解) 蓝牙XY-MBD07A是主从一体的蓝牙串口模块,简单的说,当蓝牙设备与蓝牙设备配对连接成功后,我们可以忽视蓝牙内部的通信协议,直接将将蓝牙当做串口 ...
- C/C++实现蛇形矩阵(超详解)【沈七】
C/C++实现蛇形矩阵(超详解) 题目链接 题目描述 输入样例 题解部分 完整代码 完结散花 悄悄告诉你: 参考文章 萌新报道! 唤我沈七就行嘿嘿. 大一软件工程在读. 菜鸡蒟蒻想在博客中记录一些算法 ...
最新文章
- linux环境insight安装与使用
- .NET中栈和堆的比较(二)
- python 时间模块 time datetime calendar
- 【Elasticsearch】留意Elasticsearch 7.x 可能无法选主的问题
- [hdu1242]优先队列
- 洛谷P2023 [AHOI2009]维护序列
- python mysql传入多个参数
- 高频功率放大器的设计实现
- 入驻华为云·云享专家了~
- 人力资源职位英文缩写汇总(人力资源岗位术语缩写)
- 如何使用大华SDK工具查询和播放设备录像?
- ios浏览器打开app页面提示“浏览器打不开该网页,因为网址无效”
- 利用云端GPU训练YOLOv5模型
- 小程序复制文字、保存图片
- 全球与中国2,5二甲基苯酚市场现状及未来发展趋势
- 胖哈勃杯第十三届CUIT校赛web500wp及出题心得
- 地铁供电系统原理图_地铁工作原理?
- java解压缩/压缩/加密压缩/加密解压缩 ZIP4J---ZIP文件压缩与解压缩学习
- Linux 使用openssl ca方式签发证书
- Linux开机和关机记录查看
热门文章
- java练手代码大全手机版_20个Java练手项目,献给嗜血如狂的人
- Linux如何准确判断rpm,yum,dnf进程是否阻塞[运行]?
- 手动生成token_微信小程序登录换取token的教程
- JAVA看云判断天气_怎样看云识别天气?
- DMotion - 基于DOTS的动画框架和状态机
- C#编程-36:数组与ArrayList基础复习_彭世瑜_新浪博客
- gradle入门(一)从Groovy DSL转化为KTS
- fputc()和fgetc()应用
- Web安全之业务逻辑漏洞
- deepin下安装yah3c出错(no such device)