判断数独的解是否合法

来源:百度知道 编辑:UC知道 时间:2024/06/20 02:37:01
9*9矩阵
每行,每列,每个3*3方格数字都不相同
符合输出Y,不符合N

你所说的是一个魔方阵问题,解答如下:
1.1魔方阵
所谓魔方阵是指这样的的方阵:它的阶是奇数,它的每一行、每一列和对角线之和均相等。输入n,要求打印由自然数1到n*n的自然数构成的魔方阵(n为奇数)。
例如,当n=3时,魔方阵为:
8 1 6
3 5 7
4 9 2
1.2魔方阵生成算法
奇数阶魔方阵的生成方法如下:
(1) 第一个位置在第一行正中;
(2) 新位置应当处于最近一个插入位置右上方,但如右上方位置已超出方阵上边界,则新位置取应选列的最下一个位置,如超出右边界则新位置取应选行的最左一个位置;
(3) 若上一个插入元素为N的整倍数,则选下面一行同列上的位置为新位置。
1.3魔方阵生成程序及所在文件
(1) 生成程序清单
#include <stdio.h>
void main()
{FILE *fp;
int n,a[10][10],i,h,l;
scanf("%d",&n);
printf("n=%d:\n",n);
a[1][(n+1)/2]=1;h=1,l=(n+1)/2;*
for(i=2;i<=n*n;i++)
{if((i-1)%n==0) h=h+1;
else h=(h-1)<1?h-1+n:h-1,l=(l+1)>n?l+1-n:l+1;
a[h][l]=i;}
fp=fopen("mofangzhen.txt","a");
for(h=1;h<=n;h++)
{for(l=1;l<=n;l++)
fprintf(fp,"%8d",a[h][l]);
fprintf(fp,"%c",'\n');}
fclose(fp);}
(2) 接收文件