填充Z形二维数组

形如

 1   3 4 10
 2  5 9 11
 6  8 12 15
 7 13 14 16

的数组称谓Z形二维数组。填充这样的数组其实只要按照Z形进行行走填充即可,设置一个flag指示方向,行走的时候检测边界,遇到边界便转换方向。

const int N = 16;

void fill_z_array(int A[N][N])
{
	for (int i = 1, x = 0, y = 0, flag = 1; i <= N * N; i++) {
		A[x][y] = i;
		if (flag) {
			if (y == 0) {
				if (x == N - 1) {
					y += 1;
				} else {
					x += 1;
				}
				flag = 0;
			} else {
				if (x == N - 1) {
					y += 1;
					flag = 0;
				} else {
					x += 1;
					y -= 1;
				}
			}
		} else {
			if (x == 0) {
				if (y == N - 1) {
					x += 1;
				} else {
					y += 1;
				}
				flag = 1;
			} else {
				if (y == N - 1) {
					x += 1;
					flag = 1;
				} else {
					x -= 1;
					y += 1;
				}
			}
		}
	}
}


原文地址:https://www.cnblogs.com/pangblog/p/3327606.html