homework-02
這個(gè)我只做了非連通圖,支持/v /h參數(shù)
具體原理也很簡(jiǎn)單,而且編程十分方便。
那就是積分圖:
| 1 | 1 | 1 | 1 | 1 |
| 1 | 1 | 1 | 1 | 1 |
| 1 | 1 | 1 | 1 | 1 |
| 1 | 1 | 1 | 1 | 1 |
| 1 | 1 | 1 | 1 | 1 |
假如上圖是輸入。然后我們就算對(duì)應(yīng)的積分圖。每個(gè)點(diǎn)都變成此點(diǎn)左上角所有點(diǎn)之和:
| 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 2 | 3 | 4 | 5 |
| 0 | 2 | 4 | 6 | 8 | 10 |
| 0 | 3 | 6 | 9 | 12 | 15 |
| 0 | 4 | 8 | 12 | 16 | 20 |
| 0 | 5 | 10 | 15 | 20 | 25 |
這樣的計(jì)算能在m*n復(fù)雜度內(nèi)完成。這樣帶來(lái)的好處是,對(duì)于任意一個(gè)矩形,矩形內(nèi)所有元素之和的計(jì)算就變得極其簡(jiǎn)單了。
| 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 2 | 3 | 4 | 5 |
| 0 | 2 | 4 | 6 | 8 | 10 |
| 0 | 3 | 6 | 9 | 12 | 15 |
| 0 | 4 | 8 | 12 | 16 | 20 |
| 0 | 5 | 10 | 15 | 20 | 25 |
因?yàn)樽笊辖菂^(qū)域要被減兩次,所以要加回來(lái):
元素之和 = 右下角 - 左下角 - 右上角 + 左上角
?
然后就能得到元素之和了。
?
?
關(guān)于/h /v 屬性,只要把這個(gè)圖擴(kuò)展一下就行。橫向和縱向都首尾相接變?yōu)樵瓉?lái)的兩倍。
/a屬性。可以先標(biāo)出每一塊大于0的所有元素。然后以每一塊為起點(diǎn),尋找最近的一塊區(qū)域。然后不斷重復(fù)即可。
?
轉(zhuǎn)載于:https://www.cnblogs.com/yzong/p/3347948.html
總結(jié)
以上是生活随笔為你收集整理的homework-02的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: SQL 备份还原单个表
- 下一篇: Exchange Server 2007