#include
#include
main()
{
int a[9]={1,2,3,4,5,6,7,8,9};
int b[9][9]={{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0}};
int n,i=0,j=0,p,q,r,t,k=0;
srand((unsigned)time(NULL));
while(b[8][8]==0)
{
r=0;
n=rand()%(9-k);
b[i][j]=a[n];
a[n]=0;
for(p=0;p<8;p++)
{
for(q=0;q<8-p;q++)
{
if(a[q] {
t=a[q];
a[q]=a[q+1];
a[q+1]=t;
}
}
}
for(p=j;p>0;p--)
{
if(b[i][j]==b[i][p-1])
r++;
}
for(p=i;p>0;p--)
{
if(b[i][j]==b[p-1][j])
r++;
}
if((i!=0) && (i!=3) && (i!=6))
{
if((i==1) || (i==4) || (i==7))
{
for(q=(j/3)*3;q<(j/3)*3+3;q++)
{
if(b[i][j]==b[i-1][q])
r++;
}
}
else
{
for(p=(i/3)*3;p<(i/3)*3+2;p++)
{
for(q=(j/3)*3;q<(j/3)*3+3;q++)
{
if(b[i][j]==b[p][q])
r++;
}
}
}
}
if(r==0)
{
j++;
a[0]=1;a[1]=2;a[2]=3;a[3]=4;a[4]=5;a[5]=6;a[6]=7;a[7]=8;a[8]=9;
}
else
{
k++;
b[8][8]=0;
}
if(k>=9)
{
k=0;
a[0]=1;a[1]=2;a[2]=3;a[3]=4;a[4]=5;a[5]=6;a[6]=7;a[7]=8;a[8]=9;
b[8][8]=0;
if(j==0)
{
i--;
j=8;
}
else
j--;
}
if(j==9)
{
i++;
j=0;
}
}
for(i=0;i<9;i++)
{for(j=0;j<9;j++)
printf("%d ",b[i][j]);
printf("\n");}
getch();
}