📄 shudu.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 + -