/ * Topic The number of 1-n * n is filled in the square of N * N, followed by the law: 1 3 4 10 11 2 5 9 12 19 6 8 13 18 20 7 14 17 21 24 15 16 22 23 25 * /
#include
BN (1, 0) = a (1) (0) BN (1, 1) = a (2) (1)
Lower triangle, symmetrical BN (n, n) = max - bn (0, 0) = max - bn (n - 1, n) = max - bn (n - 1, 0) = Max - BN (N, N - 1) = MAX - BN (0, 1); * /
INT SUM_N (INT N) {RETURN 1 (N * (n 1)) / 2;}
INT REV (INT N, INT M) {RETURN ((M N) & 0x1)? M: N;
INT BN (INT N, INT M) {RETURN SUM_N (N M) REV (M, N);}
Void Snake_Array (int * p, int m) {INT MAX_V = M * m 1; for (int i = 0; i Void test (Int Correct [25] = {1, 3, 4, 10, 11, 2, 5, 9, 12, 19, 6, 8, 13, 18, 20, 7, 14, 17, 21, 24, 15, 16, 22, 23, 25}; INT TEST [25] = {0}; Snake_Array (Test, 5); assert (0 == Memcmp (TEST, CORRECT, SIZEOF (Correct)));} void print_square (int * p, int m) {for (int * i = 0; i INT Main (int Argc, char * argv []) {test (); Static const INT n = 5; int Array [n * n] = {0}; snake_array (array, n); print_square (array, n); return 0;}