洛谷 P1595 信封問題

2021-09-30 13:50:06 字數 569 閱讀 9311

想不到刷普及-的題目還真有收穫

解:伯努利錯裝信封問題,公式上!

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 號同學各佔乙個水龍頭,並同時開啟水龍頭接...