2017-06-16 35 views
0

我有一個填充爲* and -的矩陣,其中*代表病毒,而-是病毒的自由點,我必須在我的矩陣中檢查每個病毒的鄰居,一個有效的鄰居是另一種病毒,而不是一個自由點,以確定其數量。我必須檢查的鄰居是[row + 1][col],[row - 1][col],[row][col + 1][row][col - 1],共四個鄰居。我做了一個函數來檢查和覆蓋所有的情況,例如,如果我檢查的元素是矩陣的其中一個角落。我想出了一個非常長的80行函數,它有很多if語句。 有沒有一種有效的方法(意思是行數)來檢查所有這些,除了必須寫如20 if陳述?如果這導致了同樣的結果報表從矩陣檢查單元格值的鄰居

https://pastebin.com/2f7YpreZ這裏是我寫

+1

你有一個可以完成這項工作的功能,但似乎效率低下?在適當的站點嘗試codereview。 https://codereview.stackexchange.com – Yunnosch

+1

如果你想讓某人在現有代碼中發現一個最沒有幫助的設計問題,那麼創建一個[mcve]。 – Yunnosch

+0

'有沒有一種有效的方法來檢查所有這些,除了必須寫如20條語句? '好吧 - 請定義'高效'。在性能方面?根據代碼行數量?在可維護性方面?如果你指的是性能,只要相信編譯器即可。如果您的要求未得到滿足,請分析您的代碼並進行相應調整。 – 4386427

回答

0

你可以做的是要合併的代碼。這將導致更短(更可讀)的代碼,並且可以在某些情況下提高性能。

因此,例如,如果您有:

if([row - 1][col]) 
    // do A 
else if([row][col + 1]) 
    // do B 
else if([row + 1][col]) 
    // do A 

,那麼你可以把它寫成這樣:

if([row - 1][col] || [row + 1][col]) 
    // do A 
else if([row][col + 1]) 
    // do B 

做到這一點,你覺得你的代碼需要進一步的改進,請張貼在Code Review