我們一開始可以先宣告一個由pair組成vector陣列 d,用來存放符合條件的位置座標
先用兩個for迴圈去讀取測資
接下來
再用外層兩個for迴圈去判斷是否符合條件
判斷曼哈頓距離時
假設此數為s[i][j];
我們可以用內層兩個迴圈,都從 -s[i][j]一路運行到s[i][j],然後得出s[i+內層第一個迴圈當時的值][j+內層第二個迴圈當時的值]
這樣子可以窮舉出以a[i][j]為中心的邊長為2*s[i][j]+1的正方形
但這正方形不全然符合條件
我們可以使用一個if判斷條件是否合理
if(內層第一個迴圈當時的值的絕對值加內層第二個迴圈當時的值的絕對值<=s[i][j] 且 不超出邊界)
絕對值可以用abs
符合條件的話
總和+=s[i+第一個迴圈當時的值][j+第二個迴圈當時的值]
然後跑完內層兩個迴圈後
如果總和取餘數也符合的話
用d.push_back({i,j})
執行完外層兩個迴圈後
對於題目的排序要求我們可以使用sort
sort在這陣列的功能是可以將每個pair第一個數由小到大排序,如果相同那比第二個數
輸出時,符合的數目為 d.size()
輸出每個pair時,第一個數為 d[第幾個pair].first,第二個數為 d[第幾個pair].second。
謝謝大家的觀看,祝大家解題順利
若有疑惑或有誤,可以私訊我喔!!!