洛谷P1595 信封问题
Posted 神犇(shenben)
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了洛谷P1595 信封问题相关的知识,希望对你有一定的参考价值。
最新讨论
题目描述
某人写了n封信和n个信封,如果所有的信都装错了信封。求所有信都装错信封共有多少种不同情况。
输入输出格式
输入格式:
一个信封数n
输出格式:
一个整数,代表有多少种情况。
输入输出样例
输入样例#1:
样例1:2 样例2:3
输出样例#1:
样例1:1 样例2:2
题解:
错位排列
本题解用的是f(n)=(n-1)*(f(n-1)+f(n-2))
这道题的另一个公式 ans=n!(1-1/1!+1/2!-1/3!+...+(-1)^n*(1/n!))
AC代码:
#include<cstdio> #include<cstring> #include<iostream> using namespace std; #define N 1010 int n; long long dfs(int x){ if(x==0) return 1; if(x==1) return 0; if(x==2) return 1; if(x==3) return 2; if(x==4) return 9; return (x-1)*(dfs(x-1)+dfs(x-2)); } int main(){ scanf("%d",&n); printf("%lld",dfs(n)); return 0; }
以上是关于洛谷P1595 信封问题的主要内容,如果未能解决你的问题,请参考以下文章