当前位置: 代码迷 >> 综合 >> HDOJ-1465 不容易系列之一(递推,错排公式)
  详细解决方案

HDOJ-1465 不容易系列之一(递推,错排公式)

热度:44   发布时间:2023-12-09 20:49:58.0

题目:HDOJ-1465

题目描述:
正整数n表示n个信封,分别对应了n封信,所有信都装错了信封,求有多少种错装的情况。
(1<n<=20)

思路:
先假设第n封正确,对于前n-1封讨论,分为两种情况
①当前n-1封中有n-1封错排,令其中1封与第n封调换,即可达到全错,该情况为(n-1)*f(n-1)
②当前n-1封中有n-2封错排,让正确的那封信与第n封对调,而正确的那封信有n-1种情况,所以该情况为(n-1)*f(n-2)

由此得到 错排公式:f(n) = (n-1) * ( f(n-1) + f(n-2) )

以下代码:(记得用long long类型)

#include<iostream>
using namespace std;
int main