#include<stdio.h>
#include<stdlib.h>
void ZigzagMatrix(int a[][100], int n);
int main()
{
int n;
printf("Input n:\n");
int a=scanf("%d", &n);
if(n<=0||n>100||a==0) printf("Input error!\n");
else
{
int snack[100][100] = { 0 };
ZigzagMatrix(snack, n);
}
system("pause");
return 0;
}
void ZigzagMatrix(int a[][100], int n)
{
int i, j, count = 0, number=1,flag=1;
for (count = 0; count <= 2 * n-2; count++)
{
if (flag == 1&&count<n)
{
for (i = 0; i <= count; i++)
{
a[i][count - i] = number;
number++;
}
}
else if(flag==-1&&count<n)
{
for (j = 0; j <= count; j++)
{
a[count - j][j] = number;
number++;
}
}
else if (flag == 1 && count >= n)
{
for (i = count-n+1; i <n; i++)
{
a[i][count-i] = number;
number++;
}
}
else if(flag == -1 && count >=n)
{
for (j =count-n+1; j <n; j++)
{
a[count - j][j] = number;
number++;
}
}
flag = -flag;
}
//for (i = 0; i < 2 * n - 1; i++)
//{
// if (i < n&&count==1)
// {
// for (j = 0; j <= i; j++)
// {
// a[i][j] = number;
// number++;
// }
// }
// else if (i < n&&count == -1)
// {
// for (j = i; j >= 0; j--)
// {
// a[i][j] = number;
// number++;
// }
// }else if (i >= n&&count == 1)//12312312312312312312
// {
// for (j = 0; j <2*n-i-1; j++)
// {
// a[i][j] = number;
// number++;
// }
// }
// else if (i >= n&&count == -1)
// {
// for (j = 2*n-i-2; j >= 0; j--)
// {
// a[i][j] = number;
// number++;
// }
// }
// count = -count;
//}
for (j = 0; j < n; j++)
{
for (i = 0; i < n; i++)
{
printf("%4d ", a[i][j]);
}
printf("\n");
}
}
对角线坐标之和等于斜着数的行数;总共2n-1行。
蛇形矩阵算法
最新推荐文章于 2024-10-07 15:15:37 发布