|
|
|
|
@ -1,100 +1,19 @@
|
|
|
|
|
#include <stdio.h>
|
|
|
|
|
#include <time.h>
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
int main(){
|
|
|
|
|
|
|
|
|
|
srand(time(NULL));
|
|
|
|
|
int board[9][9];
|
|
|
|
|
|
|
|
|
|
int i,j,b,c,x,y,z;
|
|
|
|
|
for(j=0;j<=8;j++)
|
|
|
|
|
{
|
|
|
|
|
for(i=0;i<=8;i++)
|
|
|
|
|
{
|
|
|
|
|
board[i][j]=0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
b=1;x=0;y=0;z=0;
|
|
|
|
|
while(b<=9)
|
|
|
|
|
{
|
|
|
|
|
i=rand()%3;
|
|
|
|
|
j=rand()%9;
|
|
|
|
|
if (board[i][j]==0)
|
|
|
|
|
{
|
|
|
|
|
if(i==0&&x<3)
|
|
|
|
|
{
|
|
|
|
|
board[i][j]=b;
|
|
|
|
|
b++;
|
|
|
|
|
x++;
|
|
|
|
|
}
|
|
|
|
|
if(i==1&&y<3)
|
|
|
|
|
{
|
|
|
|
|
board[i][j]=b;
|
|
|
|
|
b++;
|
|
|
|
|
y++;
|
|
|
|
|
}
|
|
|
|
|
if(i==2&&z<3)
|
|
|
|
|
{
|
|
|
|
|
board[i][j]=b;
|
|
|
|
|
b++;
|
|
|
|
|
z++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
b=1;x=0;y=0;z=0;
|
|
|
|
|
while(b<=9)
|
|
|
|
|
{
|
|
|
|
|
i=rand()%3+3;
|
|
|
|
|
j=rand()%9;
|
|
|
|
|
if (board[i][j]==0)
|
|
|
|
|
{
|
|
|
|
|
if(i==3&&x<3)
|
|
|
|
|
{
|
|
|
|
|
board[i][j]=b;
|
|
|
|
|
b++;
|
|
|
|
|
x++;
|
|
|
|
|
}
|
|
|
|
|
if(i==4&&y<3)
|
|
|
|
|
{
|
|
|
|
|
board[i][j]=b;
|
|
|
|
|
b++;
|
|
|
|
|
y++;
|
|
|
|
|
}
|
|
|
|
|
if(i==5&&z<3)
|
|
|
|
|
{
|
|
|
|
|
board[i][j]=b;
|
|
|
|
|
b++;
|
|
|
|
|
z++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
b=1;x=0;y=0;z=0;
|
|
|
|
|
while(b<=9)
|
|
|
|
|
{
|
|
|
|
|
i=rand()%3+6;
|
|
|
|
|
j=rand()%9;
|
|
|
|
|
if (board[i][j]==0)
|
|
|
|
|
{
|
|
|
|
|
if(i==6&&x<3)
|
|
|
|
|
{
|
|
|
|
|
board[i][j]=b;
|
|
|
|
|
b++;
|
|
|
|
|
x++;
|
|
|
|
|
}
|
|
|
|
|
if(i==7&&y<3)
|
|
|
|
|
{
|
|
|
|
|
board[i][j]=b;
|
|
|
|
|
b++;
|
|
|
|
|
y++;
|
|
|
|
|
}
|
|
|
|
|
if(i==8&&z<3)
|
|
|
|
|
{
|
|
|
|
|
board[i][j]=b;
|
|
|
|
|
b++;
|
|
|
|
|
z++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
int main()
|
|
|
|
|
{
|
|
|
|
|
int board[9][9] = {{8, 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},
|
|
|
|
|
{0, 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}};
|
|
|
|
|
//这个位置加下original matrix的格式输出 ,变量i,j可用
|
|
|
|
|
printf("The original Sudoku matrix:\n");
|
|
|
|
|
printf("|");
|
|
|
|
|
for(int i=0;i<23;i++)
|
|
|
|
|
{
|
|
|
|
|
@ -125,8 +44,71 @@ int main(){
|
|
|
|
|
printf("\n");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
int a[10],b[10],c[10];
|
|
|
|
|
int i,j,d,f=1,p,q,m,x,y,z;
|
|
|
|
|
|
|
|
|
|
for(i=0;i<9;i++)
|
|
|
|
|
{
|
|
|
|
|
for(j=0;j<10;j++)
|
|
|
|
|
{
|
|
|
|
|
a[j]=0;
|
|
|
|
|
}
|
|
|
|
|
for(j=0;j<9;j++)
|
|
|
|
|
{
|
|
|
|
|
d=board[j][i];
|
|
|
|
|
a[d-1]++;
|
|
|
|
|
if(a[d-1]>=2&&d-1!=-1)
|
|
|
|
|
{
|
|
|
|
|
f=0;
|
|
|
|
|
x=d;
|
|
|
|
|
y=i;
|
|
|
|
|
z=1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
for(i=0;i<9;i++)
|
|
|
|
|
{
|
|
|
|
|
for(j=0;j<10;j++)
|
|
|
|
|
{
|
|
|
|
|
a[j]=0;
|
|
|
|
|
}
|
|
|
|
|
for(j=0;j<9;j++)
|
|
|
|
|
{
|
|
|
|
|
d=board[i][j];
|
|
|
|
|
a[d-1]++;
|
|
|
|
|
if(a[d-1]>=2&&d-1!=-1)
|
|
|
|
|
{
|
|
|
|
|
f=0;x=d;y=i;z=2;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
for (p=0;p<3;p++)
|
|
|
|
|
{
|
|
|
|
|
for(q=0;q<3;q++)
|
|
|
|
|
{
|
|
|
|
|
for(m=0;m<10;m++)
|
|
|
|
|
{
|
|
|
|
|
a[m]=0;
|
|
|
|
|
}
|
|
|
|
|
for (i=3*p;i<3*p+3;i++)
|
|
|
|
|
{
|
|
|
|
|
for(j=3*q;j<3*q+3;j++)
|
|
|
|
|
{
|
|
|
|
|
d=board[i][j];
|
|
|
|
|
a[d-1]++;
|
|
|
|
|
if(a[d-1]>=2&&d-1!=-1)
|
|
|
|
|
{
|
|
|
|
|
f=0;x=d;y=3*p+q+1;z=3;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(f==1) printf("True:Valid initial Sudoku matrix!");
|
|
|
|
|
else printf("False:Invalid initial Sudoku matrix!\n");
|
|
|
|
|
if(z==1) printf("The number %d in the line %d has been used!",x,y);
|
|
|
|
|
else if(z==2) printf("The number %d in the col %d has been used!",x,y);
|
|
|
|
|
else if(z==3) printf("The number %d in the block %d has been used!",x,y);
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|