⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shudu.c

📁 这是一个可以解数独的程序
💻 C
字号:
#include<stdio.h>
void shudu(int m,int n,FILE *fp2);
int place(int m,int n);
int A[10][10];
main()
{
	FILE *fp1,*fp2;
	char c;
	int i=1,j=1;
	fp1=fopen("shudu.in","r");
	fp2=fopen("shudu.out","w");
	while((c=fgetc(fp1))!=EOF)
	{
		while(c!='\n'){
			A[i][j++]=c-'0';
			c=fgetc(fp1);
		}
		i++;
		j=1;
	}
	shudu(1,1,fp2);
	fclose(fp1);
	fclose(fp2);
}
void shudu(int m,int n,FILE *fp2)
{
	int i,j,k0,k1,mid1,mid2,tag=0;
	int table[10]={0,1,2,3,4,5,6,7,8,9};
	while(A[m][n]!=0&&m<10){
		if(n==9){
			m++;
			n=1;
		}
		else
			n++;
	}
	if(m>9)
	{
		tag=1;
		for(k0=1;k0<=9;k0++)
		{
			for(k1=1;k1<=9;k1++)
				fprintf(fp2,"%d",A[k0][k1]);
			fprintf(fp2,"\n");
		}
	}
	else{
		for(i=1;i<=9;++i)
		{
			if(A[m][i]!=0)
				table[A[m][i]]=0;
			if(A[i][n]!=0)
				table[A[i][n]]=0;
		}
		mid1=m;
		while(mid1%3!=0)
			mid1++;
        mid2=n;
		while(mid2%3!=0)
			mid2++;
		for(i=mid1-2;i<=mid1;i++){
			for(j=mid2-2;j<=mid2;j++){
				if(A[i][j]!=0)
					table[A[i][j]]=0;
			}
		}
		
		for(i=1;i<=9;i++)
		{
			if(table[i]!=0)
			{
				A[m][n]=table[i];
				if(n==9)
					shudu(m+1,1,fp2);
				else
					shudu(m,n+1,fp2);
			}
			if(tag)
				return;
		}
		if(i==10)
			A[m][n]=0;
	}
}




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -