Main ()
{
Int I, j, good = 1, a [43] [43] = {0}, n, ix, jy, num = 0, x, it, jt, test = 0;
Printf ("nn = ");
Scanf ("% d", & n );
If (n> 41) {printf ("Error."); goto exit ;}
For (I = 1, j = 1; 1 ;)
{
If (good)
{
A [j] [I] = 1;
If (j = n)
{
For (jy = 1; jy <= n; jy ++)
{
Printf ("n ");
For (ix = 1; ix <= n; ix ++) {printf ("% d", a [jy] [ix]);}
}
Num ++;
A [j] [I] = 0;
I ++;
Getch ();
Printf ("n ");
}
Else {j ++; I = 1 ;}
}
Else I ++;
If (I> n)
{
J --;
For (ix = 1; ix <= n; ix ++) {if (a [j] [ix] = 1) x = ix ;}
A [j] [x] = 0;
I = x + 1;
}
If (j = 1) & (I = (n + 1) goto out;
Else if (j = 1) good = 1;
Else if (I> n) good = 0;
Else {
For (it = I-1, jt = J-1; (it> 0) & (jt> 0); it --, jt --)
If (a [jt] [it] = 1) test = 1;
For (it = I + 1, jt = J-1; (it <= n) & (jt> 0); it ++, jt --)
If (a [jt] [it] = 1) test = 1;
For (it = I, jt = J-1; jt> 0; jt --)
If (a [jt] [it] = 1) test = 1;
If (test = 0) good = 1;
Else good = 0;
Test = 0;
}
}
Out: printf ("n num = % d", num );
Exit: getch ();
}