正常矩阵:
int a[n][n];
int t = 1;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
a[i][j] = t++;
}
}
S形矩阵:
int a[n][n];
int t = 1;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if(i%2==0)
a[i][j]=t++;
else
a[i][n-1-j]=t++;
}
}
Z形矩阵:
int a[n][n];
int t = 1;
int i = 0;
int j = 0; //每次调用此函数必须用memset(a,0,sizeof(a));
a[0][0] = t++;
for (; t <= n * n;)
{
if (i < n && i - 1 >= 0 && j + 1 < n && a[i - 1][j + 1] == 0)
{
a[i - 1][j + 1] = t++;
i -= 1;
j += 1;
}
else if (i + 1 < n && j < n && j - 1 >= 0 && a[i + 1][j - 1] == 0)
{
a[i + 1][j - 1] = t++;
i += 1;
j -= 1;
}
else if (j == 0 && i + 1 < n)
{
a[i + 1][j] = t++;
i += 1;
}
else if (i == 0 && j + 1 < n)
{
a[i][j + 1] = t++;
j += 1;
}
else if (i == n - 1 && j + 1 < n)
{
a[i][j + 1] = t++;
j += 1;
}
else if (j == n - 1 && i + 1 < n)
{
a[i + 1][j] = t++;
i += 1;
}
}
蛇形矩阵(和Z形差不多):
int count=1;
int i,j,n;
int k=0;
while(count<=n*(n+1)/2)
{
for(i=k,j=0;i>=0,j<=k;i--,j++)
{
a[i][j]=count++;
}
k++;
}