[問題] 檢查前後陣列 邊緣時的狀況例外寫法請益

看板C_Sharp (C#)作者 (以光為名)時間12年前 (2012/10/04 15:46), 編輯推噓2(205)
留言7則, 4人參與, 最新討論串1/1
標題可能打得有點難懂,實際情況是這樣的, 有一堆數量為count^2的控制項,會排列成長寬都為count的大正方型, 然後要對每一個控制項上下左右的鄰居做屬性檢查, 但如果在邊緣的控制像,就會抓到溢位的陣列或是上一排的末端, 我原本針對這樣的問題,在判斷式中加入遇到邊緣的時候不檢查的判定, 結果好像因為這麼做的原因,讓程式碼變得很肥而且跑的速度很慢, 想想也是很浪費的做法,因為大部分的控制項其實都不會出問題, 只有上下左右的第一排才會爆炸。 想了半天,還是決定來版上問問看各位高手,有沒有比較省時省力的做法呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 120.125.7.64

10/04 15:48, , 1F
if(x==0 || x==count-1 || y==0 || y==count-1)
10/04 15:48, 1F

10/04 15:48, , 2F
這樣邊緣不就都不會判斷了?
10/04 15:48, 2F

10/04 16:23, , 3F
如果你是從左上開始作檢查 那每一控制項都只要檢查右/下
10/04 16:23, 3F

10/04 16:25, , 4F
鄰居就好 也只需check x或y其中之一是否超出邊界
10/04 16:25, 4F

10/04 20:15, , 5F
那要不把邊緣與非邊緣分別快取到2個list去 之後個別處理?
10/04 20:15, 5F

10/04 22:25, , 6F
最外層再加一圈控制項,就不需要檢查了 ...
10/04 22:25, 6F

10/04 23:40, , 7F
樓上好主意
10/04 23:40, 7F
感謝各位,我先用邊緣和非邊緣分開處理的做法試試看。 ※ 編輯: stu87616 來自: 1.162.161.12 (10/05 00:31)
文章代碼(AID): #1GRJx5Bt (C_Sharp)
文章代碼(AID): #1GRJx5Bt (C_Sharp)