五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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ó)家法律
卢湾区| 乐都县| 小金县| 萍乡市| 鄱阳县| 涡阳县| 万安县| 彰化市| 威远县| 建瓯市| 广南县| 琼结县| 逊克县| 东城区| 乐业县| 黑山县| 横峰县| 葵青区| 汝城县| 肥乡县| 西华县| 呼图壁县| 牡丹江市| 永安市| 灵宝市| 琼中| 房产| 民权县| 永康市| 兴宁市| 延吉市| 广水市| 大名县| 肃南| 东源县| 松江区| 中超| 平凉市| 蓬安县| 扬州市| 福建省|