大一的第一个解决问题的程序,递归操作,很久才搞定这个程序。--
输入格式为9*9的 数字矩阵 如果没有填入数字则用0代替,用递归求解 对每个格子进行1 - 9 的尝试填入 递归操作 直到81个格子全部填入成功,输出第一个解。如果填某个格子发现不正确的时候退出这层递归返回上层。
代码如下
</pre><pre name="code" class="objc">#include <stdio.h>
#define FOR(i, x, y) for(i = x; i <= y; ++i)
int result = 1;
void start (int a[9][9],int n);
int check(int a[9][9],int i,int j, int k);
void output(int a[9][9]);
int main()
{
int a[9][9];
int i,j;
FOR(i, 0, 8)
FOR(j, 0, 8)
scanf("%d",&a[i][j]);
start (a,0);
return 0;
}
void output(int a[9][9])
{
result--; //只需要输出第一个解
int i ,j;
FOR(i, 0, 8)
{
FOR(j, 0, 8)
printf("%d ",a[i][j]);
printf("\n");
}
}
int check (int a[9][9],int i,int j,int k)
{
int i1,j1,p,q;
FOR(p, 0, 8)
if (a[p][j