玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个同色九宫内的数字均含1 - 9,不重复。
输入包含9 x9的已知数字,空位用0补齐,中间用空格隔开。(输入数独题目确保正确)
输出为输入数独题目的解。
样例输入:
8 0 0 0 0 0 0 0 0
引用>
0 0 3 6 0 0 0 0 0
0 7 0 0 9 0 2 0 0
7 0 5 0 0 0 0 0 0
0 0 0 0 4 5 7 0 0
0 0 0 1 0 0 0 3 0
0 0 1 0 0 0 0 6 8
0 0 8 5 0 0 0 1 0
0 9 0 0 0 0 4 0 0样例输出:
8 1 2 7 5 3 6 4 9
引用>
9 4 3 2 6 8 1 7 5
6 7 5 4 9 1 2 8 3
1 4 2 3 5 6 7 8 9
3 6 9 8 4 5 7 2 1
2 8 7 1 6 9 5 3 4
5 3 2 1 9 7 4 6 8
4 1 3 5 2 6 8 9 7
7 9 6 3 1 8 4 5 2C语言代码样例
# include & lt; stdio.h> # include & lt; stdlib.h> int * fillnumber (int [9] [9] [10], int, int, int j) { (int k=0; k<9 k + +) { [我][k][数字]+ +; 一个[k] [j][数字]+ +; } (int n=0; n<3; n + +) { for (int m=0; m<3; m + +) { [i/3 * 3 + n] [j/3 * 3 + m][数字]+ +; } } 返回一个; } int * resetnumber (int [9] [9] [10], int, int, int j) { (int k=0; k<9 k + +) { [我][k][数字]——; [k] [j][数字]——; } (int n=0; n<3; n + +) { for (int m=0; m<3; m + +) { [i/3 * 3 + n] [j/3 * 3 + m][数字]——; } } 返回一个; } 无效的搜索(int, int [9] [9], int g [9] [9] [10]) { 如果(步骤==0){ for (int i=0; i<9;我+ +){ (int j=0; j<9; j + +) { printf (" % d”,[我][j]); } printf (" \ n "); } 退出(0); } for (int i=0; i<9;我+ +){ (int j=0; j<9; j + +) { 如果([我][j]==0) { (int数=1;number<10; + +) { 如果(g[我][j][数字]==0){ fillnumber (g,数量,i, j); [我][j]=数量; 搜索(步骤1,g); [我][j]=0; resetnumber (g,数量,i, j); } } 返回; } } } } int主要(int命令行参数个数,const char * argv []) { int [9] [9]; int abool [9] [9] [10]; int一步=0; for (int i=0; i<9;我+ +){ (int j=0; j<9; j + +) { (int k=1; k<10 k + +) { abool[我][j] [k]=0; } } } for (int i=0; i<9;我+ +){ (int j=0; j<9; j + +) { scanf (“% d”,[我][j]); 如果([我][j]==0) { 步+ +; } 其他{ fillnumber (abool[我][j], i, j); } } } 搜索(步骤、abool); 返回0; } >之前
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
C语言实现数独游戏的求解