Serpentine

xiaoxiao2021-03-06  64

/ * 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 #include #include / * analysis: upper triangle a (0) = 1 = 1 0 a (1) = 2 3 = a (0) 1, A (0) 1 1 a (2) = 4 5 6 = a (1) 2, A (1) 2 1, A (1) 2 2 a (3) = 7 8 9 10 = a (2) 3, A (2) 3 2, A (2) 3 2, A (2) 3 3 ... A (N) = SUM_N (N), SUM_N (N) 1, SUM_N (N) 2, ..., SUM_N (N) N reverse sequence is listed as A (N) = SUM_N (N), SUM_N (N) N - 1, SUM_N (N) N - 2, ..., sum_n (n) n - 3 BN array bn (0, 0) = a (0) (0) bn (0, 1) = a (1) (1) BN ( 0, 2) = a (2) (2)

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;}

转载请注明原文地址:https://www.9cbs.com/read-83503.html

New Post(0)