題目:有一個9*9的2D陣列,在這個陣列中,每一個都要被執行到,但是不能重複執行(以不規則的方式)

 


問題敘述上有個問題,9*9的2D陣列中是什麼樣格式的資料要被執行?在這裡我先用布林陣列代替


問題重點是每一個都要被執行到,但是不能重複執行(以不規則的方式),等於是要產生81個不重複的亂數數值,這也是題目中最困難的地方

 


題目的處理方式:


1.是先把9*9的2D陣列拆解重組成81的1D陣列


2.產生0~80共81個不重複的亂數數值


3.以亂數數值為索引依序從已重組的1D陣列取出資料執行

 


以正常套用公式的方式來產生0~80共81個不重複的亂數數值,從執行到產生結果要比較長的時間


通常遇到這種問題較快速的方法:就是把已重組的1D陣列用亂數產生索引的方式取出資料,被取出的資料就從陣列中剔除,如此就可確保不會重複執行,又可以每個都被執行

 


以下程式做個簡單示範,同樣的原理還有很多種作法,要採用哪種方法要看陣列中是什麼樣的資料格式來選則

20111123-01  

 

20111123-02  

,

未出師的小工程師 發表在 痞客邦 PIXNET 留言(0) 人氣()