You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
sdjz/README.md

1.9 KiB

#include <stdio.h> #include <time.h> #include <stdlib.h> 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++) { printf("-"); } printf("|"); printf("\n"); for(int i=0;i<9;i++) { printf("| "); for(int j=0;j<9;j++) { printf("%d ",board[i][j]); if(j==2||j==5||j==8) { printf("| "); } } printf("\n"); if((i+1)%3==0&&i!=0) { printf("| "); for(int k=1;k<23;k++) { printf("-"); } printf("|"); printf("\n"); } }

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;

}