
【ybt】【基算 递推 课过 例1】错排问题
发布日期:2021-05-06 16:01:23
浏览次数:13
分类:技术文章
本文共 761 字,大约阅读时间需要 2 分钟。
错排问题
题目链接:
题目描述
解题思路
这道题是一道入门级(个鬼)的递推。
设 f n f_n fn 为 n n n 个数的合法排列。我们将第 n n n 个数放在第 k k k 个位置上,则有 n − 1 n-1 n−1 中放法( n ! = k n!=k n!=k)。
余下的元素有两种情况:
- 将 k k k 放在 n n n 上,则剩下的元素为 n − 2 n-2 n−2 的错排,即 f n − 2 f_{n-2} fn−2。
- 将 k k k 放在非 n n n 的位置上,则包括 k k k 在内剩下的元素为 n − 1 n-1 n−1 的错排,即 f n − 1 f_{n-1} fn−1。
因为我们是在确定 n n n 的位置之后再考虑 k k k 的情况,所以 n n n 的情况和 k k k 的情况满足乘法原理。
因为 k k k 放 n n n 与不放 n n n 是两种不同的情况,所以这两种情况满足加法原理。
得递推式为: f n = ( n + 1 ) ( f n − 1 + f n − 2 ) f_n=(n+1)(f_{n-1}+f_{n-2}) fn=(n+1)(fn−1+fn−2)
其中 f 1 = 0 f_1=0 f1=0, f 2 = 1 f_2=1 f2=1。code
#include#include #define int long longusing namespace std;int n;int f[30];signed main(){ cin>>n; f[1]=0,f[2]=1; for(int i=3;i<=n;i++) f[i]=(i-1)*(f[i-1]+f[i-2]); cout< <
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年03月17日 18时57分19秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
2021年G1工业锅炉司炉考试报名及G1工业锅炉司炉模拟考试题库
2019-03-03
2021年安全员-B证(山东省)考试内容及安全员-B证(山东省)模拟考试题
2019-03-03
从xx离职随笔
2019-03-03
大数据学习之Spark——00Spark项目的pom.xml文件
2019-03-03
大数据学习之Spark——01Spark概述
2019-03-03
LeetCode0234. 回文链表
2019-03-03
比特币史话·78 | 有容乃大(2): 零食售卖机
2019-03-03
比特币史话·96 | 隐私(3): 熔币重铸
2019-03-03
Fire prejudice: 巴菲特搭档芒格首度认可比特币
2019-03-03
GLUT和wxWidgets在OpenGL开发中的比较
2019-03-03
CodeBlocks开发wxWidgets环境配置详细
2019-03-03
Qt 转向 LGPL之后,wxWidgets 路在何方
2019-03-03
[翻译]2009年6月wxWidgets更新 - 支持图标的wxButton
2019-03-03
wxAUI - wxWidgets用户界面框架 - 使用感受
2019-03-03
wxSqlite3 - wxWidgets封装的Sqlite数据库访问类库 - 使用感受
2019-03-03
wxSqlite3 和 wxPropertyGrid 类库的说明
2019-03-03
wxSqlite3类库的使用感受 - 关于乱码的问题
2019-03-03
天涯人脉通讯录 - 设计草图
2019-03-03
★★★男女朋友价格计算器V1.6 - 看看你的朋友值多少钱 :-)
2019-03-03