W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
自己做了一個(gè)拼圖小游戲,大概如下:
1 2 3
4 5 6
7 8 0
0是空白位置,每次按照隨機(jī)的順序重新排列,但是不是每次排列后都可能被還原,例如:
1 2 3
4 5 6
8 7 0
這樣是復(fù)原不了的
----------------------割----------------------------
第一種解決辦法:
后來(lái)查了一些方法,其中有提到“反序數(shù)”的概念,通過(guò)兩個(gè)矩陣的反敘述奇偶是否相同,可以判斷兩個(gè)矩陣,其中一個(gè)矩陣是否可以通過(guò)相鄰位置的對(duì)象兩兩互換位置后調(diào)整成另外一個(gè)矩陣。
(反序數(shù))
但是親測(cè)后發(fā)現(xiàn)只用反敘數(shù)判斷還是沒(méi)能成功,因?yàn)槠磮D游戲只能通過(guò)“0”位(空白位置)和其相鄰的位置進(jìn)行互換。
這里判斷還需要加上兩個(gè)矩陣空白位置所在矩陣的行列數(shù)進(jìn)行判斷。
以上面的矩陣為例子,
第一個(gè)矩陣空白塊所在位置為 a[2][2]. 反序數(shù)為0
和為: sum = 2 + 2 + 0 ; sum = 4;
第二個(gè)矩陣空白塊所在位置是 a[2][2],反序數(shù)為3
和為:sum = 2 +2 + 3 = 7;
0 為偶數(shù),3為奇數(shù),所以第二個(gè)矩陣是不能轉(zhuǎn)換成第一個(gè)矩陣的,也就是如果拼圖打亂成這個(gè)順序是不能被還原的。
第二種解決辦法:
讓空白格隨機(jī)和周邊的方塊交換位置,這樣這樣走幾十步就可以了,而且一定可以復(fù)原。
參考文檔:
一群大神的舌槍唇戰(zhàn),可以參考,但是沒(méi)有什么實(shí)際性的作用;
拼圖里面,一張圖片應(yīng)該以么樣的算法打亂,才能夠保證有解?
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: