數獨 九宮格 破解

2021-07-01 23:32:49 字數 1077 閱讀 7249

說到數獨,或者九宮格,我想大家一定都不陌生,初中高中看的各種雜誌上都有這種益智遊戲,現在的智慧型手機上也有人寫出了這種遊戲,閒暇時候玩玩也能活躍一下腦子。還有看《模仿遊戲》這部電影裡面,圖靈在選拔隊友的時候好像出的也是數獨的題目。

我本來對數獨不是太感興趣,但是乙個偶然的機會看到朋友在玩這個遊戲,就想寫出乙個破解演算法,來在朋友面前炫耀一下,也可以順便複習一下最近學習的c語言。

數獨事實上就是乙個9*9的乙個方陣,之所以又叫九宮格,是因為其中每3*3的方陣為一宮,整個大方陣有九個這樣的宮。規則是在每一行每一列填上1~9九個數字,使得各行各列填滿且不重複,並且每一宮中的數字也是1~9不重複。

對於演算法來講,主要使用遞迴,對於資料結構來講,用二維陣列來表示9*9的方陣,然而每乙個位置都有兩個屬性,即數值和所在的宮,所以一開始我先宣告了乙個結構體來包含這兩個屬性。然後用乙個分配演算法來分配各個位置的數字所在的宮。具體的破解演算法其實就是讓程式去測試每乙個位置該填什麼數字,需要判斷每一行,每一列,每一宮是否有重複,都沒有重複則表示成功。如果成功則保留,不成功則退回重新測試。通過輸入原始資料來讓程式執行,程式執行後如果有解則輸出方陣,如果沒有則輸出無解。具體程式如下(c語言):

#include#include#define _crt_secure_no_deprecate

#pragma warning(disable:4996)

#define n 9

struct thenums;

struct thenums tn[n][n];

int result = 0; //結果數

void sharepal(struct thenums shnum[n][n])

else if (row >= 4 && row <= 6)

else

} }}bool check(struct thenums chenum[n][n], int row, int col, int key)

//判斷列

九宮格數獨遊戲

乙個九宮格數獨遊戲,以下是思路和html檔案,由於水平有限沒有使用什麼比較高階的語法,都是一些基礎的東西,所以 比較長。思路是把數獨理解成乙個二維陣列,只要每次遊戲開始隨機生成乙個符合九宮格規則的9 9二維陣列即可。如果不隨機就可以記答案,遊戲就沒意思了 1.1輸入原型陣列,這個陣列要符合規則 1....

數獨遊戲九宮格

初步定義 使用資料結構的方式實現九宮格數獨遊戲 include stdio.h 標準輸入輸出標頭檔案 include conio.h 包含getch 的標頭檔案 include stdlib.h 包含rand 的標頭檔案 include assert.h 包含assert 的標頭檔案 include...

開源 完美破解九宮格(數獨)遊戲

數獨是一種比較費時費腦的遊戲,一般難度的數獨玩下來也得1個小時左右,本人是偽數獨愛好者,碰到難點的數獨需要花上若干個小時,於是偷懶寫了一套破解程式,特拿出來分享,希望有人喜歡。思路 1 從第乙個空格開始,計算出所有可能填充的數字,拿出第乙個進行填充,將剩下的可能數字記錄下來 2 接著計算下乙個空格所...