// Snake Filling Method
# Include "stdio. H"
Void main ()
{
Int N, I, j;
Scanf ("% d", & N );
Int t = n * n;
For (I = N; I> 0; I --)
{
For (j = N; j> 0; j --)
Printf ("% 5d", t --);
Printf ("/N ");
}
} [/Code]
[Code] // 6.2
# Include "stdio. H"
# Define n 15
Void main ()
{
Int sum, J, T = 1, start, end;
Static int a [n] [N];
For (sum = 0; sum <2 * n-1; sum ++)
{
Start = (sum <n )? 0: Sum-(N-1 );
End = (sum <n )? Sum :( N-1 );
For (j = start; j <= end; j ++)
(Sum % 2 )? (A [J] [Sum-J] = T ++) :( A [Sum-J] [J] = T ++); // (sum % 2) control the surround direction
}
For (sum = 0; sum <n; sum ++)
{
For (j = 0; j <n; j ++)
Printf ("% 5d", a [Sum] [J]);
Printf ("/N ");
}
}
Used to control the direction. If it is changed to a [J] [I], the direction is opposite.
# Define N 10
Void main ()
{
Static int a [n] [N], I, j, num;
Int start = 0, end = n-1;
For (int t = 0; t <= n/2; t ++, start ++, end --, I ++, J ++)
{
For (I = start; I <end; I ++)
A [I] [J] = ++ num;
For (j = start; j <end; j ++)
A [I] [J] = ++ num;
For (I = end; I> Start; I --)
A [I] [J] = ++ num;
For (j = end; j> Start; j --)
A [I] [J] = ++ num;
If (START = end)
A [start] [end] = ++ num;
}
For (I = 0; I <n; I ++)
{
For (j = 0; j <n; j ++)
Printf ("% 4D", ELEM );
Printf ("/N ");
}
}
// Rotary Filling Method
# Include <stdio. h>
# Define elem a [I] [J] //