UVA10970 Big Chocolate
[Problem]
- 給你一塊 n×m 的巧克力和一把刀,你要用刀把這個巧克力分成 n×m 個 1×1 的小塊,但是一刀不能看兩個巧克力,請問你最少需要砍幾刀?
- 多組數據。1≤n,m≤300。
[Soluntion]
這是一道思維題。據我所知,有兩種思考的方法。
-
感性的思考。
一刀可以把巧克力分成兩塊,兩刀可以把巧克力分成三塊,三刀可以把巧克力分成四塊……以此類推,t 刀可以把巧克力分成 t+1 塊。
所以,要把巧克力分成 n×m 塊,就需要 n×m−1 刀,直接輸出即可滿分。
-
比較理性的思考。
先橫着切還是先豎着切,還是橫豎相交的切,需要的刀數都是一樣的。所以我們可以這樣考慮:
先考慮把巧克力分成 m 個 n×1 的小塊,這需要 m−1 刀。再把這 m 個小塊各自分成 1×1 的巧克力,每個小塊需要 n−1,所以總的刀數爲:
(m−1)+(n−1)×m=m−1+(n−1)×m=(n−1+1)×m−1=n×m−1
直接輸出,馬上滿分。
[code]