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

歡迎光臨散文網(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ó)家法律
万盛区| 乌海市| 陇川县| 甘孜| 杭锦后旗| 清流县| 六安市| 松江区| 乐亭县| 保山市| 济宁市| 讷河市| 平罗县| 济南市| 阿克苏市| 韶山市| 辽宁省| 昌宁县| 宁强县| 龙州县| 曲周县| 沾化县| 孟连| 怀宁县| 贵州省| 根河市| 武胜县| 高邑县| 涟源市| 泾川县| 昌图县| 广宁县| 泽库县| 大城县| 太湖县| 霍州市| 安吉县| 武城县| 灵山县| 同德县| 临夏市|