2007年11月6日 星期二

拼圖-加強版


開始:
第1步:分割圖,請參考上一篇

第2步:亂數排序,傳入要交換的2個圖編號(0~8),利用位置交換

經過老師提醒後發現會出現無解的情形,所以上網找了何時會出現無解的情形

加上一個如果無解則將空白移到有解的位置判斷(無解的判斷法在下面)


遊戲:
第1步:點空白四周的圖,判斷位置是否跟空白的位置相差為一個圖的長或寬

是則移動
第2步:用陣列確認是否完成,一開始是0~8,當圖移動時跟著移 ,未完成則回到遊戲第1步

EX:第5個跟第9個圖(空白的圖)交換,陣列變{0,1,2,3,8,5,6,7,4}

第3步:顯示出隱藏的第9格


無解的判斷法:

參考下面的那個網頁

http://www.shes.hcc.edu.tw/~oddest/math162.htm



覺得第一個方法太麻煩第二個看不懂


沒關係,我也覺得很麻煩

所以,觀察了一下,發現還有一個方法,下面是用小畫家畫有解的圖





看出來了嗎?
由於空白到原本位置的移動次數等於交換次數
而移動次數跟移動到原本位置的最少次數都為奇數次或偶數次
(例如:移4次的空白移動到原本位置最少次數的路徑為空->7->8為移2次)
因此可得到若交換次數跟空白移動到原本位置的最少次數都為奇數次或偶數次
時有解。

沒有留言:

張貼留言