Note that it is a positive even number. Not including 0
And when there's n=2, you should put it sideways.
#include <cstdio> #include <algorithm>using namespace std;void dfs (int n) {if (n = = 1) {printf ("1 1\n" ); Return } else if (n ==2) {printf ("1 1\n"); printf ("1 2 1 3\n"); Return } else if (n = = 3) {printf ("1 2\n"); printf ("1 1 2 1\n"); printf ("1 3 2 3 2 2\n"); Return } else if (n% 2 = = 1) {DFS (n-3); int num = (n-3) * (n-2)/2; int col = (n-2)/2; int row = Num/col; N-2 for (int i = 1; I <= col; i++) printf ("%d%d", I, row+1); printf ("%d%d", col+1, row+1); for (int i = 1; I <= col; i++) {printf ("%d%d", col+1, row-i+1); } puts (""); N-1 for (int i = 1; I <= (n-1)/2; i++) printf ("%d%d", col+1, I); for (int i = (n-1)/2; I >= 1; i--) printf ("%d%d", col+2, I); Puts (""); n for (int i = 1; I <= n/2; i++) printf ("%d%d", COl+2, (n-1)/2+i); printf ("%d%d", col+2, row+2); for (int i = 1; I <= n/2; i++) printf ("%d%d", col+2-i, row+2); Puts (""); } else {DFS (n-1); int num = (n-1) *N/2; int col = N/2; int row = Num/col; for (int i = 1; I <= n/2; i++) printf ("%d%d", I, row+1); for (int i = N/2; I >= 1; i--) printf ("%d%d", I, row+2); Puts (""); }}int Main () {int n; while (~SCANF ("%d", &n)) {int xx, yy; if (n% 2 = = 1) {xx = (n+1)/2; yy = N; } else {xx = N/2; yy = n+1; } printf ("%d%d\n", XX, yy); DFS (n); } return 0;}
15 Beijing Regional Competition--construction--hihocoder 1257 Snake Carper