uva 10918 計數問題

2021-08-20 06:08:23 字數 1602 閱讀 9981

題目鏈結

看了幾篇部落格,只有這篇部落格真正的把這個問題說清楚了

這種題很大概率是要得到遞推公式,但是怎麼得到遞推公式是個難點,首先考慮這樣乙個問題,我們怎麼樣拼出乙個長度為x且無法用豎線分割的矩形(x為偶數),當x=2時,有三種拼法,很簡單,那麼當x>2時?可以畫一下

先放成這樣

這時再如果再放乙個豎的,那就不滿足不可豎線不可分割的要求了,所以必須放橫的,而且放倆個

放了之後是這個樣子滴

然後再放,最上面那個鍥進去的只能放橫的,所以再放上去乙個橫的

結果就是這個樣子滴

雖然難看,但是可以發現此時與第一幅圖的情況是一樣的

也就是說我們要重複這一過程,直到長度達到x

那麼我們拼出這樣乙個長度為x且豎線不可分割的矩形,有多少種情況?仔細觀察一下,剛開始的如果先在下面放乙個橫的,再上面放乙個豎的,這樣其實是和剛才說的那種情況是對稱的,所以也是一種,其實只有兩種

說完這些,這道題的遞推公式就容易得出了

首先n一定是偶數,令fn表示長度為n的矩形的填充方法數

f2=3

考慮n>2的情況,最右邊如果是乙個長度為2的小矩形,那麼這種情況有3*fn-2種情況,最右邊如果是長度為4的小矩形,有2*fn-4種情況,依次遞推,直到最右邊是長度為n的,所以邊界時2*f0,其實沒有n=0這種情況,但是為了遞推公式,可以令它為1,即f0=1

所以遞推公式就出來了 fn=3*fn-2+2*(fn-4+...f0)

寫出fn-2的遞推式之後做差可以化簡得到 fn=4*fn-2-fn-4

之後打表計算就行了

#includeint main()

, a, i;

mm[0] = 1;//為了遞推公式而設的;實際不會存在這種情況;

mm[2] = 3;

for(i = 4; i < 32; i = i+2)

while(scanf("%ld",&a) != eof && a != -1)

return 0 ;

}

計數問題(二)

計數問題 二 在上一講中,我們一起研究 列舉法 乘法原理 加法原理 在計數問題中的應用。但是,在實際的問題中,這些方法並不是單獨使用的。往往需要同時應用這幾種方法,這就需要我們搞清題意,根據已知條件,分別使用正確的方法,得到準確的結果。一 閱讀思考 例1.求720這個數約數的個數。分析與解 從1開始...

問題 E 計數問題

時間限制 1 sec 記憶體限制 128 mb 提交 30 解決 22 提交狀態 討論版 命題人 admin 題目描述 試計算在區間 1 到 n 的所有整數中,數字 x 0 x 9 共出現了多少次?例如,在 1 到 11 中,即在 1 2 3 4 5 6 7 8 9 10 11 中,數字 1 出現了...

序關係計數問題

序關係計數問題 問題描述 用關係 和 將3 個數a b和c依序排列時有13 種不同的序關係 a b c,a b 設n個數可列出的關係式的個數為g n 下面我們設法總結規律找出g n 的遞推關係 對於乙個關係式 a1 a2 a3.an 其中 表示 或 總存在乙個k,使a1,a2,ak,之間均用 連線,...