題目描述 某人寫了n封信和n個信封,如果所有的信都裝錯了信封。求所有信都裝錯信封共有多少種不同情況。 輸入輸出格式 輸入格式: 一個信封數n(n<=20) 輸出格式: 一個整數,代表有多少種情況。 輸入輸出樣例 輸入樣例#1: 複製 2 輸出樣例#1: 複製 1 輸入樣例#1: 複製 2 輸出樣例# ...
題目描述
某人寫了n封信和n個信封,如果所有的信都裝錯了信封。求所有信都裝錯信封共有多少種不同情況。
輸入輸出格式
輸入格式:
一個信封數n(n<=20)
輸出格式:
一個整數,代表有多少種情況。
輸入輸出樣例
輸入樣例#1: 複製2輸出樣例#1: 複製
1輸入樣例#2: 複製
3輸出樣例#2: 複製
2
遞推公式:$f[n]=(n-1)*(f[n-1]+f[n-2])$
#include<iostream> #include<cstdio> using namespace std; int main() { int N; cin>>N; int a1=0,a2=1,a3; for(int i=3;i<=N;i++) { a3=(i-1)*(a1+a2); a1=a2,a2=a3; } if(N==1) cout<<a1; else if(N==2) cout<<a2; else cout<<a3; return 0; }