最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

C語(yǔ)言數(shù)獨(dú)程序

2023-06-14 08:00 作者:機(jī)器朗讀  | 我要投稿

以下是一個(gè)簡(jiǎn)單的用C語(yǔ)言編寫的數(shù)獨(dú)程序,可以運(yùn)行并玩數(shù)獨(dú)游戲。程序使用遞歸和回溯算法來(lái)解決數(shù)獨(dú)謎題。你可以根據(jù)需要自行修改和擴(kuò)展程序。

#include <stdio.h>

#define SIZE 9

// 打印數(shù)獨(dú)棋盤
void printBoard(int board[SIZE][SIZE]) {
 ? ?printf("-------------------------\n");
 ? ?for (int i = 0; i < SIZE; i++) {
 ? ? ? ?if (i % 3 == 0 && i != 0) {
 ? ? ? ? ? ?printf("|-------|-------|-------|\n");
 ? ? ? ?}
 ? ? ? ?printf("| ");
 ? ? ? ?for (int j = 0; j < SIZE; j++) {
 ? ? ? ? ? ?if (j % 3 == 0 && j != 0) {
 ? ? ? ? ? ? ? ?printf("| ");
 ? ? ? ? ? ?}
 ? ? ? ? ? ?printf("%d ", board[i][j]);
 ? ? ? ?}
 ? ? ? ?printf("|\n");
 ? ?}
 ? ?printf("-------------------------\n");
}

// 檢查在指定位置放置數(shù)字是否合法
int isSafe(int board[SIZE][SIZE], int row, int col, int num) {
 ? ?// 檢查行是否合法
 ? ?for (int i = 0; i < SIZE; i++) {
 ? ? ? ?if (board[row][i] == num) {
 ? ? ? ? ? ?return 0;
 ? ? ? ?}
 ? ?}

 ? ?// 檢查列是否合法
 ? ?for (int i = 0; i < SIZE; i++) {
 ? ? ? ?if (board[i][col] == num) {
 ? ? ? ? ? ?return 0;
 ? ? ? ?}
 ? ?}

 ? ?// 檢查3x3方格是否合法
 ? ?int startRow = row - row % 3;
 ? ?int startCol = col - col % 3;
 ? ?for (int i = 0; i < 3; i++) {
 ? ? ? ?for (int j = 0; j < 3; j++) {
 ? ? ? ? ? ?if (board[i + startRow][j + startCol] == num) {
 ? ? ? ? ? ? ? ?return 0;
 ? ? ? ? ? ?}
 ? ? ? ?}
 ? ?}

 ? ?return 1; // 數(shù)字合法
}

// 查找空白位置
int findEmptyLocation(int board[SIZE][SIZE], int *row, int *col) {
 ? ?for (*row = 0; *row < SIZE; (*row)++) {
 ? ? ? ?for (*col = 0; *col < SIZE; (*col)++) {
 ? ? ? ? ? ?if (board[*row][*col] == 0) {
 ? ? ? ? ? ? ? ?return 1; // 找到空白位置
 ? ? ? ? ? ?}
 ? ? ? ?}
 ? ?}
 ? ?return 0; // 未找到空白位置
}

// 解決數(shù)獨(dú)謎題
int solveSudoku(int board[SIZE][SIZE]) {
 ? ?int row, col;
 ? ?if (!findEmptyLocation(board, &row, &col)) {
 ? ? ? ?return 1; // 數(shù)獨(dú)已經(jīng)解決
 ? ?}

 ? ?// 嘗試填充數(shù)字
 ? ?for (int num = 1; num <= SIZE; num++) {
 ? ? ? ?if (isSafe(board, row, col, num)) {
 ? ? ? ? ? ?board[row][col] = num;

 ? ? ? ? ? ?if (solveSudoku(board)) {
 ? ? ? ? ? ? ? ?return 1; // 數(shù)獨(dú)已經(jīng)解決
 ? ? ? ? ? ?}

 ? ? ? ? ? ?board[row][col] = 0; // 回溯
 ? ? ? ?}
 ? ?}

 ? ?return 0; // 無(wú)解
}

int main() {
 ? ?int board[SIZE][SIZE] = {
 ? ? ? ?{5, 3, 0, 0, 7, 0, 0, 0, 0},
 ? ? ? ?{6, 0, 0, 1, 9, 5, 0, 0, 0},
 ? ? ? ?{0, 9, 8, 0, 0, 0, 0, 6, 0},
 ? ? ? ?{8, 0, 0, 0, 6, 0, 0, 0, 3},
 ? ? ? ?{4, 0, 0, 8, 0, 3, 0, 0, 1},
 ? ? ? ?{7, 0, 0, 0, 2, 0, 0, 0, 6},
 ? ? ? ?{0, 6, 0, 0, 0, 0, 2, 8, 0},
 ? ? ? ?{0, 0, 0, 4, 1, 9, 0, 0, 5},
 ? ? ? ?{0, 0, 0, 0, 8, 0, 0, 7, 9}
 ? ?};

 ? ?printf("數(shù)獨(dú)謎題:\n");
 ? ?printBoard(board);
 ? ?printf("\n");

 ? ?if (solveSudoku(board)) {
 ? ? ? ?printf("解決后的數(shù)獨(dú):\n");
 ? ? ? ?printBoard(board);
 ? ?} else {
 ? ? ? ?printf("無(wú)解。\n");
 ? ?}

 ? ?return 0;
}


C語(yǔ)言數(shù)獨(dú)程序的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
泰宁县| 金塔县| 西吉县| 曲松县| 八宿县| 绥宁县| 泸州市| 花垣县| 永安市| 仙游县| 灵台县| 保德县| 扶风县| 昌黎县| 周至县| 嘉义县| 怀柔区| 加查县| 五常市| 祁门县| 文登市| 武冈市| 永川市| 平昌县| 昭觉县| 新津县| 托克逊县| 屏南县| 滨州市| 嘉兴市| 青州市| 吉安县| 洪雅县| 古蔺县| 周口市| 嘉定区| 阿克苏市| 恭城| 彭山县| 武鸣县| 呼玛县|