數字華容道關鍵演算法(有序隨機數生成)

2021-09-03 07:48:42 字數 1220 閱讀 7028

玩過數字華容道的都知道,隨機數是由原來的順序排列通過隨機移動塊產生的,但是如果把塊扣出來重新組合就會導致可能永遠不會回到初始狀態

例如:1   2   3   1   2   3

4   5   6    4   5   6

7   8        8   7

正常結果只能是左邊這個,而右邊這個肯定是錯誤的,是乙個永遠也回不去的方法,所以避免這種情況發生,我特意寫了乙個類來產生滿足遊戲規則的隨機數

package shuzihuarongdao;

/** *

* @author xgl

* 用於生成n*n宮格隨機數排表,末尾值為0或者為空(待定)

*/public class shuzhihuadaoshuzhi else

} /**

* 呼叫此方法需要設定引數a的值

*/public shuzhihuadaoshuzhi()

/*不能建立string的構造方法,防止呼叫者修改string的資料*/

/*setter,getter方法*/

/*** 獲取生成**的大小 a*a;

* @return a的值

*/public int geta()

/*** 設定**的大小 a*a

* @param a

*/public void seta(int a) else

} /*不能建立string的setter方法,防止呼叫者修改string的資料*/

/***

* @return 乙個字串,此字串用於宮格隨機數正常排列

* 例如:array[3][3]的九個數產生的隨機數是437561280;末尾值始終產生0;防止錯誤

* 那麼 string返回的值也是437561280,然後再利用其它方式將這個字串拆分放入到乙個宮格裡面

*/public string getshuju()

/*** 此方法用於實現隨機資料的生成,本方法不給使用者實現,用於當前呼叫

* @return 乙個字串

*/private string shuzhi()

} shuju = "";

for(int j=0;j=0)}}

} private void right()

}} }

private void bottom()

}

感謝**

我的官網

華容道演算法之效能優化

上篇文章講解了華容道演算法基本演算法知識,也是最簡單的,效率也是最低的。這篇文章講解高效率演算法。從下篇文章開始主要分析linux 驅動 以及嵌入式相關設計知識。本次編碼採用棋子在棋盤中的位置編碼,順序是從左往右 從上到下。以橫刀立馬舉例說明。正方形的應該是1 記得從0開始計算 橫方塊值是0x80 ...

hdu 6620 數字華容道定理

沒玩過數字華容道,網上找的,判斷兩張圖能不能相等,把1234行按順序插到前一行結尾,計算除0外的逆序對數,判斷兩張圖0所在的行差和逆序數的奇偶性,相同就能到,而且其他部落格都說80步,4 4的圖就可到 include include include include include include i...

華容道3x3的技巧 數字華容道 無上限解題技巧

之前就聽過數字華容道,但是一直沒有上手,今天發現室友再玩,我就下了乙個,試了一下3x3 26秒,挺簡單的 有玩了下5x5 說實話,前面3行很順利,但是最後2行就比較 碰運氣 以及燒腦了。真不是謙虛,我完成了,但我知道我真的靠運氣,緊接著玩8x8 到最後兩行擺弄了20分鐘,直接放棄,我實在不想破壞上一...