标签:tab efault stream clu int out output href class
琪露诺(冰之妖精)有操控冷气的能力。能瞬间冻结小东西,比普通的妖精更危险。一直在释放冷气的她周围总是非常寒冷。
由于以下三点原因……
所以琪露诺便得到了“笨蛋”的别称。
某日,琪露诺又2了……
她写了N封信要装到N个信封里面,却全都装错了……现在想知道有多少种装错的可能性。
信和信封的数量N。
装错的可能性的数量。
输入样例1
2
|
输入样例2
4
|
输出样例1
1
|
输出样例2
9
|
1≤N≤100
【题目大意】n封信错排。
【思路】错排问题。递推公式。
f[n]表示n封信错排的可能数。
证明:现在要对第n封信进行错排,有n-1个位置可以选择。假设选择位置k。
对位置k原有的信进行错排,有两种情况。
(1)到位置n,那么n,k已经错排好了,再加上剩下n-2封信的错排,f[n-2]。
(2)k没有放到位置n,+f[n-1].
分步乘法计数原理和分类加法计数原理
f[n]=(n-1)*(f[n-2]+f[n-1]);
【code】
#include<iostream> #include<cstdio> using namespace std; int n,f[120]; long long dp(int n) { if(n==1)return 0; if(n==2)return 1; else return (n-1)*(dp(n-1)+dp(n-2)); } int main() { scanf("%d",&n); printf("%lld\n",dp(n)); return 0; }
没写高精会T。 ToT~~
标签:tab efault stream clu int out output href class
原文地址:http://www.cnblogs.com/zzyh/p/7061690.html