#include<stdio.h>
int main()
{
int A,c;
int n[243],n1[82],n2[82],n3[82];
int b[83];
b[0]=b[82]=0;
int a[83]={0,
5,0,2,0,0,0,0,0,0,
0,0,0,0,6,0,9,0,0,
0,0,0,0,0,0,0,0,0,
0,4,1,0,0,7,0,0,0,
0,0,0,5,0,0,0,6,0,
0,0,5,0,0,2,0,0,0,
0,9,7,0,8,5,0,0,0,
0,0,0,0,0,0,0,3,5,
0,5,4,0,0,0,0,9,6};
for(c=0;c<81;c++){ n1[c+1]= c/27 *27+ c%27/9 *9 -1;
n2[c+1]= c%9/3 *27+ c%3 *9 +80;
n3[c+1]= c/27 *27+ c%9/3 *9 +161;
n[c]=n[c+81]=n[c+162]=0;
}
for(c=1;c<82;c++){ A=a[c];
b[c]=0;
if(A) n[n1[c]+A]=n[n2[c]+A]=n[n3[c]+A]=++b[c];
}
c=1;
while(c){ while(b[c]) c++;
if(c<82){ A=a[c];
if(A) n[n1[c]+A]=n[n2[c]+A]=--n[n3[c]+A];
while(++A<10)
if(n[n1[c]+A]<1)
if(n[n2[c]+A]<1)
if(n[n3[c]+A]<1){ n[n1[c]+A]=n[n2[c]+A]=++n[n3[c]+A];
a[c++]=A;
break;
}
}
else { for(A=0;A<81;A++){ printf(" %d",a[A+1]);
if(A%9>7) printf("\n");
}
getchar();
}
if(A>9) { a[c]=0;
while(b[--c]);
}
}
return 0;
}
Comentarios sobre la versión: 1.3 (0)
No hay comentarios