动态规划 信封错排

Posted 亮星的信息学小屋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态规划 信封错排相关的知识,希望对你有一定的参考价值。



题    目

 某人写了n封信要放到n个信封里面,且第一封信要放到1号信封,第二封信要放到2号信封,以此类推。如果所有的信都装错了信封。求所有的信都装错信封,共有多少种不同情况。


动态规划 信封错排



解    析



动态规划 信封错排

这道题,真的比较烧脑


我们先思考一下


n有n-1种放法


我们再将


n放下来的位置是赋值给k


就会有两种方法


第一种是将k


放回n的初始位置


就等于将n与k交换了一下


那剩下来的


就是n-2个数的信封错排


否则的话


就是将n-1个数进行信封错排


所以


状态转移方程就是


f[n]=(n-1)*(f[n-1]+f[n-2])


下面是代码:




加油!

动态规划 信封错排


经典动态规划—信封错排的代码



动态规划 信封错排
#include<bits/stdc++.h>
#include<iostream>
#include<cstdlib>
#include<cstdio>
using namespace std;
int f[1000],n;
int main()
{
cin>>n;
f[1]=0;
f[2]=1;
for(int i=3;i<=n;i++) f[i]=(i-1)*(f[i-2]+f[i-1]);
cout<<f[n]<<" ";
return 0;
}




加油!


动态规划 信封错排




动态规划 信封错排

我的萌萌哒老妹!



加油




往期精彩推荐




某些图片来自互联网,如有侵权,请联系删除


欢迎关注

亮星的信息学小屋

亮星的信息学小屋

动态规划 信封错排


觉得有用,请点右下方“在看”,谢谢鼓励


以上是关于动态规划 信封错排的主要内容,如果未能解决你的问题,请参考以下文章

#yyds干货盘点# 动态规划专题:信封嵌套

动态规划——Russian Doll Envelopes

Leetcode 动态规划刷题总结

力扣技巧之动态规划力扣354:俄罗斯套娃信封问题C++

数据结构与算法学习——动态规划-2

hdu_2048 错排问题