洛谷——P1595 信封问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了洛谷——P1595 信封问题相关的知识,希望对你有一定的参考价值。
P1595 信封问题
题目描述
某人写了n封信和n个信封,如果所有的信都装错了信封。求所有信都装错信封共有多少种不同情况。
输入输出格式
输入格式:
一个信封数n(n<=20)
输出格式:
一个整数,代表有多少种情况。
输入输出样例
输入样例#2: 复制
3
输出样例#2: 复制
2
错排问题,问题可以转化成有n个信封,第一个信封不能放1号信,第二个信封不能放2号信,第三个信封不能放3号信、、、、,这样我们利用错排公式:f[n]=(f[n-1]+f[n-2])*(n-1)
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define N 50 using namespace std; int n,f[N]; int read() { int x=0,f=1; char ch=getchar(); while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();} while(ch>=‘0‘&&ch<=‘9‘) x=x*10+ch-‘0‘,ch=getchar(); return x*f; } int main() { n=read(); f[2]=1; for(int i=3;i<=n;i++) f[i]=(f[i-1]+f[i-2])*(i-1); printf("%d",f[n]); return 0; }
以上是关于洛谷——P1595 信封问题的主要内容,如果未能解决你的问题,请参考以下文章