close
題目:有一個9*9的2D陣列,在這個陣列中,每一個都要被執行到,但是不能重複執行(以不規則的方式)
問題敘述上有個問題,9*9的2D陣列中是什麼樣格式的資料要被執行?在這裡我先用布林陣列代替
問題重點是每一個都要被執行到,但是不能重複執行(以不規則的方式),等於是要產生81個不重複的亂數數值,這也是題目中最困難的地方
題目的處理方式:
1.是先把9*9的2D陣列拆解重組成81的1D陣列
2.產生0~80共81個不重複的亂數數值
3.以亂數數值為索引依序從已重組的1D陣列取出資料執行
以正常套用公式的方式來產生0~80共81個不重複的亂數數值,從執行到產生結果要比較長的時間
通常遇到這種問題較快速的方法:就是把已重組的1D陣列用亂數產生索引的方式取出資料,被取出的資料就從陣列中剔除,如此就可確保不會重複執行,又可以每個都被執行
以下程式做個簡單示範,同樣的原理還有很多種作法,要採用哪種方法要看陣列中是什麼樣的資料格式來選則
文章標籤
全站熱搜