
數獨是語(yǔ)言數一個(gè)邏輯游戲,目標是獨棋在9×9的網(wǎng)格中填入數字19,使得每行、語(yǔ)言數每列和每個(gè)3×3的獨棋小(xiao)網(wǎng)格中的數字都不重??復,在C語(yǔ)言中,語(yǔ)言數我們可以通過(guò)二維數組來(lái)表示數獨棋盤(pán),獨棋并通過(guò)循環(huán)和條件判斷來(lái)實(shí)現游戲的語(yǔ)言數玩法。
((′?`)圖片來(lái)源網(wǎng)絡(luò ),獨棋侵刪??)以下是語(yǔ)言(′?ω?`)數一個(gè)簡(jiǎn)單的C語(yǔ)言數獨棋盤(pán)實(shí)現:
1、我們需要定義一個(gè)??二維數組來(lái)表示數獨棋盤(pán),獨棋我們可以使用int類(lèi)型的語(yǔ)言數數組,數組的獨棋大小為9×9。
int board[9][9] = { 0};2、語(yǔ)言數接下來(lái),獨棋我們需要實(shí)現一個(gè)函數來(lái)初始化?數獨棋盤(pán),語(yǔ)言數我們可以將19的數??字隨機??填入棋盤(pán),確保每行、每列和每個(gè)3×3的小網(wǎng)格中的數字都不重復。
void init_board() { srand(time(NULL)); for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { board[i(′?_?`)][j] = rand()(⊙_⊙) % 9 + 1; } }}3、我們需要實(shí)現一個(gè)函數來(lái)檢查當前棋盤(pán)狀態(tài)是否合法,我們可以遍歷棋盤(pán),檢查每行、每列和每個(gè)3×3的小網(wǎng)格中的數字是否重復,如果有重(zhong)復,返回0表示不合法;否則返回1表示合法。
int is_valid() { for (int i = 0; i < 9; i++) { int row[9] = { 0}; int col[9] = { 0}; int box[9] = { 0}; for (int j = 0; j < 9; j++) { if (board[i][j]?? != 0) { if (row[board[i][j]] == 1 || col[board[i][j]] == 1 || box[board[i][j] 1]?? == 1) { return 0; } row[board[i][j]] = 1; col[board[i][j]] = 1; box[board[i][j] 1] = 1; } } } for (int i = 0; i < 9; i++) { in(′▽?zhuān)?t row[9] = { 0}; int col[9] = { 0}; int box[9] = { 0}; for (in??t j = 0; j < 9; j += 3) { for (int k = 0; k < 3; k++) { for (int l = 0; l < 3; l++) { if (board[i + k][j + l] != 0) { if (row[board[i + k][j + l]] == 1 || col[board[i + k][j + l]] == 1 || box[board[i + k][j(′?`) + l] 1] == 1)?? { return 0; } row[board[i + k][j + l]] = 1; col[board[i + k][j + l]] = 1; box[board[i + k][j + l] 1] = 1; } } } } } return 1;}4、我們需要(′_ゝ`)實(shí)現一個(gè)函數來(lái)打印數獨棋盤(pán),我們可以遍歷棋盤(pán),將每個(gè)格子的數字打印出來(lái),為了美觀(guān),我們可以在每行(xing)末尾添加換行符。
void print_board() { for (in(′ω`)t i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { printf("%d?? ", board[i][j]); } printf(""); }}5、在主函數中,我們可以先初始化數??(╯°□°)╯(shu)獨棋盤(pán),然后不斷嘗試填入數??字,直到找到一個(gè)合法的解,我們可以使用鍵盤(pán)輸入來(lái)獲取用戶(hù)填入的數字,然后更新棋盤(pán)狀態(tài),如果找到合法解,我們可以打印出來(lái)并結束游戲;否則提示用戶(hù)重新輸入。
#include <stdio.h>#include <stdlib.h>(╯°□°)╯︵ ┻━┻#include &l(╬?益?)t;time.h>#include <conio.h>#include <window(╥_╥)s.h>#include <string.h>#include <math.h>#include <ctype.h>#def??ine NDEBUG //取消斷言調試功能,提高運行效率(可選項)*/#include <assert.h> //包含斷言庫(可選項)*/*/ /*定義常量*/*/ #define NDEBUG //取消斷言調試功能,提高運行效率(可選項)*/ #include <assert.h> //包含斷言庫(可選項)*/*/ /*定義常量*( ?▽?)/*/ //定義常量*/*/ //定義常量*/*/ int main() { //主函數開(kāi)始?? */ init_board(); //初始化數獨棋盤(pán) while (1) { //無(wú)限循環(huán) print_board(); //打印數獨棋??盤(pán) char input[2]; //用于存儲用戶(hù)輸入的數字 scanf("%s", input); //讀取用戶(hù)輸入的數字 int num = atoi(input); //將字符串轉換為整數 if (is_valid()) { //如果當前棋盤(pán)狀態(tài)合法 for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { if (board[i][j] == 0 && num > 0) { board[i][j] = num; break; } } if (bo??ard[i][j] != 0) { num; continue; } } } else { //如果當前棋盤(pán)狀態(tài)不合法,提示用戶(hù)重新輸入 while (!isdigit(input[0]( ?ヮ?))) { input[0] = getch(); } } } } return 0; //主函數結束 } //主函數結束 *//*主函數結束*//*主函數結束*//*主函數結束*//*主函數結束*//*主函數結束*//*主函數結束*//*主函數結束*(′?`)//*主函數結束*//*主函數結束*//*主函數結束*//*主函數結束*//*主函數結束*//*主函數結束*//*主函數結束*//*主函數結束*//*主函數結束*//*主函數結束*//*主函數結束*//*主函數結束*//*主函數結束*//*主函??數結束*//*主函數結束*//*主函數結??束*//*主函數結束*//*主函數結束*//*主函數結束*//*主函數結??束*//*主函數結束*//*主??函數結束*//*主函數結束*//*主函數結束*//*主函數結束*//*主函數結束(′?_?`)*//*主函數結束*//*主函數結束*//*主函數結束*//*主函數結束?*/(′?ω?`)/*主函數結束*//*主函數結束*//*主函數結束*//*主函數結束*//*主函數結束(╬?益?)*//*主函數結束*//*主函數結束*//*主函數結束*//*??主函數結束*//*主函數結束*//*主函數結束*//*主函數結束*/(′?_?`) /*定義常量*///定義常量*///定義常量*///定義常量*///定義常量*//(′?ω?`)/定義常量*///定義常量*///定義常量*///定義常量*///定義常(chang)量*///定義常量*///定義常量*///定義常量*??///定義常量*//(//ω//)/定義(′_`)常量*///定義常量(liang)*///定義常量*///定義常量??*///定義常量*///定義常量*///定義常量*///定義常量(╬ ò﹏ó)*///定義常量*///定義常量(liang)*///定義常量(′?_?`)*///定義常量*///定義常量*///定義常量*///定義常量*///定義常量*///定義常量*///定??義常量*///定義常量*/(′_`)//定義常量*///定義常量*///定義常量*///定義常量*///定義常量*///定義常量*///定義常量*///定義常量*///定義常量*///定義常量*///定義常量*///定義常量*///定義常量*///定義常量*///定義常量*///定義常量*///定義常量*///定義為空字符 *//??/?定義為空字符 *//(′?`*)/定義為空字符 *///定義為空字符 *///定義為空字符 *///定義為空字符 *///定義為空字符 *///定義為空字符 *///定義為空字符 *///定義為空字符 *///定義為空字符 *///定義為空字符 */??//定義為空字符 *///定義為空字符 *///定義為空字符 *///定義為空字符 *///定??義為空字符 *///定義為空字符 *///定義為空字符 *///定義為空字符 */(╯‵□′)╯//定義為空字符 *///定義為空字符 *///定義為空字符 *///??定義為空字符 *///定義為空字符 *///定義為空字符 *///定義為(′?_?`)空字符 *///定義為空字符 *///定義為空字符 */ヾ(′?`)?//定義為空字符 *///定義為空字符 *///定義為空字(′?_?`)符 *//