程式說明,
這個程式是由玩數獨遊戲而產生的,目的是同過設計這樣乙個程式提高自己的程式設計水平,提高對計算機應用的認識,同時來增強遊戲的可玩性;
程式設計中用到了很多我在玩數獨時的經驗;
一、數獨題目(困難級):
解題要求:
,用數字
1~9
填入方格中,
要求每行、每列、每個小九宮格內的數字不能重複;
二、程式設計的基本思路:
我們可以用物件導向的程式設計思路來設計這個程式,
我們可以把每個小方格抽象設計成
方格類;
進而,我們把每個小九宮格設計成小九宮格類,有九個小方格類的成員組成其資料成員;
最後,我們把大九宮格抽象設計成乙個大九宮格類,他包含了九個小九宮格物件;
現在,我們討論一些玩數獨遊戲的一些經驗:
1.法一:
就是把每個方格按行列,和小九宮格的約束來確定自己的取值範圍;如果取值範圍中只有一種情況,那麼這時這個方格的值已經確定了;比如,上題中
(4, 5)
這個方格的可能值只有
6 ,
確定後這個方格後
, (6, 5)
的值也確定了, 為
1;
2.法二
:我們觀察第一列的三個九宮格
, 其中有兩個
2 ,
位置分別為:
(3, 2)
、(6, 1);
這樣我們就可以確定方格
(7, 3)
的值為2,
為什麼呢
?我們來觀察第三個小九宮格
, 先觀察列
,其中第
一、二列的方格中不能有
2, 所以只有第三列的兩個方格中可以出現
2, 但是第三中下面的那個九宮格的值不能為
2 ,
又因為小九宮格裡一定要出現乙個
2, 所以
(7, 3)
的值就是
2;總結上面的方法
, 我們可以發現
, 方法一是通過排除可能性
, 若可能的值為乙個時
, 那這個方格的值就可以確定了
; 方法二是結合排除法和九宮格的需求
來確定數值;
三、類中資料結構、程式功能的說明:
1.方格類
(grid):
我在這個類裡設計乙個
int型的資料成員
, 這個
int型資料的前
16位資料中的後
4位用來表示數值的可能值有多少個, 後
16位中我用後
9位來記錄這個方格有那些值是可能的(如圖
), 我設從低到高分別代表
1~9的數字
, 如果最低位為
1, 則表示這個方格的可能值裡有
1, 如果為
0 ,
表示這個方格中的不可能出現值
1;
下圖中, 這個方格類物件有
3個可能的值
,分別為
2.小九宮格類
(jiugongge):
在這個九宮格中,我用了乙個方格類陣列來存放九個方格物件:
3. 大九宮格類(sudoku)
:我在這個類裡定義了兩個 物件, 乙個是用於存放已確定值的grid的資訊的,還有乙個用於存放小九宮格的;
//用於存放確定的grid 的資訊
queueinfo;
jiugongge* jgg[9];
待續。。。。。
解數獨遊戲的程式構思想法
有次我在上數學課時,聽著聽著課,我腦海中突然出現了乙個解數獨遊戲的程式的構思想法,因為我對數獨遊戲比較感興趣,可我對於乙個數獨題目,我要思考很久才能解答出來,我就想依靠乙個程式來幫助我解答,正因為有這樣的想法,我才產生這個解數獨遊戲的程式構思想法,那時我還並不知道早就有了這麼一種程式,我還以為沒呢!...
Ambari的架構與設計思想
ambari包羅了大部分hadoop生態系統的元件,說明它的抽象層次 設計思想值得我們去研究學習。ambari的架構 通過三張圖來說明 第一張架構圖告訴我們 ambari是hortonworks貢獻給社群的 完全開源的 hadoop生態的集群管理 監控 部署的工具 第二張架構圖告訴我們 對外,amb...
Ambari的架構與設計思想
ambari包羅了大部分hadoop生態系統的元件,說明它的抽象層次 設計思想值得我們去研究學習。ambari的架構 通過三張圖來說明 第一張架構圖告訴我們 ambari是hortonworks貢獻給社群的 完全開源的 hadoop生態的集群管理 監控 部署的工具 第二張架構圖告訴我們 對外,amb...