想不到刷普及-的題目還真有收穫
解:伯努利錯裝信封問題,公式上!就是錯排公式啦f(n)=(n-1)*(f(n-1)+f(n-2))
(n表示信封數)
【演算法分析】首先,f(0)=1, f(1)=0, f(2)=1
當n>2時,設第一封信裝在第二個信封中 (有n-1種方法)
此時若第二封信裝在第乙個信封中,則剩下的即為n-2錯排問題 (f(n-2)種方法)
若第二封信不裝在第乙個信封中,把第二封信看作與第乙個信封為一套
(與錯排意思相同),剩下的即為n-1錯排問題 (f(n-1)種方法)
得出公式:f(n)=(n-1)*(f(n-1)+f(n-2))(n表示信封數)
#include
#define ll long long
using
namespace
std;
int f[10000];
int n;
int main()
P1595 信封問題
題目描述 某人寫了n封信和n個信封,如果所有的信都裝錯了信封。求所有信都裝錯信封共有多少種不同情況。輸入格式 乙個信封數n n 20 輸出格式 乙個整數,代表有多少種情況。輸入輸出樣例 輸入 1 輸出 1 輸入 2 輸出 2 include include include include inclu...
洛谷 P1595 信封問題 遞推 1 2
某人寫了n封信和n個信封,如果所有的信都裝錯了信封。求所有信都裝錯信封共有多少種不同情況。輸入格式 乙個信封數n n 20 輸出格式 乙個整數,代表有多少種情況。輸入樣例 1 2輸出樣例 1 1輸入樣例 2 3輸出樣例 2 2用f i 表示i個數的錯排 第一步 考慮放第n個元素,有n 1種 第二步 ...
洛谷 P1190 接水問題
題目描述 學校裡有乙個水房,水房裡一共裝有 m 個龍頭可供同學們開啟水,每個龍頭每秒鐘的 供水量相等,均為 1。現在有 n 名同學準備接水,他們的初始接水順序已經確定。將這些同學按接水順序從 1到 n 編號,i 號同學的接水量為 wi。接水開始時,1 到 m 號同學各佔乙個水龍頭,並同時開啟水龍頭接...