關於解數獨程式的設計思想與方案

2021-04-18 13:12:29 字數 2358 閱讀 5904

程式說明,

這個程式是由玩數獨遊戲而產生的,目的是同過設計這樣乙個程式提高自己的程式設計水平,提高對計算機應用的認識,同時來增強遊戲的可玩性;

程式設計中用到了很多我在玩數獨時的經驗;

一、數獨題目(困難級):

解題要求:

,用數字

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...