2015-02-23 53 views
1

我正在用C++創建一個交互式數獨板。每當用戶更改一個值時,我想檢查一下該板是否完成。當板上的所有空間都被填滿時,該板將完成。我的兩個想法是:效率與內存權衡

  1. 創建一個私人數據成員,其中包含填充空間的數量。要檢查板是否完成,我只需檢查這個值是否等於boardLength^2

  2. 創建一個迭代通過板的成員函數,當找到空格時返回false,如果它通過沒有找到任何空格

這是一個偏好問題,還是有一個更接受/正確的方法來做到這一點?

+2

通常,如果您發現自己將代碼包裝在執行十億次循環的代碼中,那麼實際上,每次程序執行時,代碼將執行一次*,這就浪費了您的時間。 – meagar 2015-02-23 19:35:24

回答

9

這是一個偏好問題,還是有一個更接受/正確的方式來做到這一點?

優化的接受和正確的方法,在一般:

優化速度或內存佔用,當你真正需要,當你確定一個實際的問題。你的項目的獨特需求將決定什麼是「問題」。

否則,請優化代碼的可讀性和可維護性。

你的具體情況:

機會是,無論你選擇哪種算法,你的支票會發生如此之快,你將無法衡量它,並且用戶將從未通知之間的區別簡單的解決方案和「快速」解決方案。任何試圖優化這一點(以犧牲複雜性或可讀性爲代價或花時間編寫代碼)都是很差的折衷。

使用最簡單的可能解決方案。一旦完成,如果用戶輸入出現明顯延遲,並且您可以確認這是由低效的電路板完成檢查引起的,請考慮改進算法的方法。