以下是用递归的方式求解九宫格(数独)的源代码:
- //=========================================================================
- ///
- //[
- //[ Filename: test.c
- //[ Function: 数独求解
- //[ Last Update: 2012.7.16
- //[ CopyLeft: Phoenix_Su
- //[ Note: 1.源程序末尾的注释为输入格式,第一个矩阵为区块划分标记(从1开始),
- //[ 如九宫格的划分为注释中所示,第二个矩阵为待填满的九宫格,
- //[ 用你预先设定的数字替换矩阵中的加号即可,第二个矩阵
- //[ 填好后将其复制进文本文件以"in.txt"命名保存至工程的目录下
- //[ 2.注意输入文件"in.txt"中的空格数量不要出错,建议用记事本打开,
- //[ 否则九宫格的形状会很奇葩……
- //[ 3.源代码末尾的注释中的九宫格为芬兰数学家发现的传说中
- //[ ”最难“的九宫格,仅有一个解!
- //[ 4.暂时只支持小于9的矩阵,若改成大于9*9的矩阵需要将读取方式
- //[ 改成GUI形式,且跟Res数组相关的部分需作相应更改
- //[ (主要是数据类型的问题导致输入输出方式有一定的变化)
- //[
- ///
- //=========================================================================
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <ctype.h>
- #include <conio.h>
- #include <time.h>
- #include <assert.h>
- #define WIDTH 9
- #define HIGHT 9
- #define REC_WIDTH ((WIDTH)*2) // 18 char number of each line
- #define BUF_SIZE (REC_WIDTH) // 18
- #define BLOCK_SIZE 9
- #define BLOCK_NUM ((WIDTH)*(HIGHT)/(BLOCK_SIZE)) //9
- #define USED 1
- #define UNUSED 0
- #define FIND_SOLUTION 1
- int ReadMatrix( void );