CSP 202104-02 鄰域灰度? 70分


題意:

還是輸入灰度陣,不過是方陣,給定一個范圍r,方陣某個點的鄰域內(包括邊界,超過邊界的按邊界算)灰度值的平均值如果小於等於某個值t,那么這個區域就是灰度區域? 求方陣中灰度區域的個數。

輸入:

n r t l

灰度方陣

輸出:

灰度區域的個數

思路:

一開始墨跡半天,畫下來之后就清晰了很多。主要就是找到方陣中這個位置的鄰域邊界,這個邊界一定是規則的矩形(方形也算),所以找到四個角的位置坐標就好,然后在這個矩形范圍內把每一塊灰度的值加起來,和 t*區域內點的個數 比較(不取平均值,那樣涉及到浮點數,數據類型不好整而且還可能出現精度問題)。其中,區域內點的個數可以用四個角的坐標計算。

未解:

1. 只拿了70,后面數據 TLE (超時),應該是我四層for循環那超時了。后來想到了如果加的過程中,灰度總值已經超過了 t*區域內點的個數 ,那就不用比較了(因為這個點的鄰域灰度平均值一定大於 t 了(區域點的個數已經確定了呀!)),於是用 if break 剪枝,但還是超時,可能問題不出現在這吧。

解題實況:

1. 解題過程一開始只求了超出邊界按邊界計算的情況,沒超出的忘記處理了。

2. 調試功能有問題,於是手動把 T count_t 方陣輸出,看結果就很明顯,這個可以沿用。

3. 注釋也不能出現中文,搞得我寫注釋還得想想咋翻譯,不過后來另外在一個txt文件里面把思路捋了捋。平時可以注意一下全英文編程

 

總結:

不管咋說,這次過了哈哈哈。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM