題意:
還是輸入灰度陣,不過是方陣,給定一個范圍r,方陣某個點的鄰域內(包括邊界,超過邊界的按邊界算)灰度值的平均值如果小於等於某個值t,那么這個區域就是灰度區域? 求方陣中灰度區域的個數。
輸入:
n r t l
灰度方陣
輸出:
灰度區域的個數
思路:
一開始墨跡半天,畫下來之后就清晰了很多。主要就是找到方陣中這個位置的鄰域邊界,這個邊界一定是規則的矩形(方形也算),所以找到四個角的位置坐標就好,然后在這個矩形范圍內把每一塊灰度的值加起來,和 t*區域內點的個數 比較(不取平均值,那樣涉及到浮點數,數據類型不好整而且還可能出現精度問題)。其中,區域內點的個數可以用四個角的坐標計算。
未解:
1. 只拿了70,后面數據 TLE (超時),應該是我四層for循環那超時了。后來想到了如果加的過程中,灰度總值已經超過了 t*區域內點的個數 ,那就不用比較了(因為這個點的鄰域灰度平均值一定大於 t 了(區域點的個數已經確定了呀!)),於是用 if break 剪枝,但還是超時,可能問題不出現在這吧。
解題實況:
1. 解題過程一開始只求了超出邊界按邊界計算的情況,沒超出的忘記處理了。
2. 調試功能有問題,於是手動把 T count_t 方陣輸出,看結果就很明顯,這個可以沿用。
3. 注釋也不能出現中文,搞得我寫注釋還得想想咋翻譯,不過后來另外在一個txt文件里面把思路捋了捋。平時可以注意一下全英文編程。
總結:
不管咋說,這次過了哈哈哈。