一个Z矩阵的实现方法:
#include
//定义维数
#define MATRIX_DIMENSION_NUM 6
int _tmain(int argc, _TCHAR* argv[])
{
int n = MATRIX_DIMENSION_NUM;
//一维数组存放数据
int *pArray = new int[n * n];
//i 遍历,(x,y)坐标
int i, x = 0, y = 0;
for (i = 0; i < n * n; ++i)
{
//通过(x,y)坐标,设置值
pArray[y * n + x] = i + 1;
//y坐标为n - 1, 此时变换时,x坐标不变,y坐标为之前的x + 1
if (y == n - 1)
{
y = x + 1;
x = n - 1;
continue;
}
//x坐标为0, 此时变换时,y坐标不变,x坐标为之前的y + 1
if (x == 0)
{
x = y + 1;
y = 0;
continue;
}
--x;
++y;
}
//打印
for (i = 0; i < n * n; ++i)
{
printf("%02d", pArray[i]);
if (i % n != n - 1)
printf(" ");
else
printf("\r\n");
}
delete[] pArray;
system("pause");
return 0;
}