描述

在一个mn的数组中,按照Zig-Zag的顺序依次填写1,2,3,…mn。
输入
两个整数m,n表示m*n的矩阵,整数间以空格隔开。2<=m,n<100
输出
输出矩阵
样例1
输入 输出
3 3 1 2 6
3 5 4
4 8 9
样例2
输入 输出
2 3 1 2 5
3 4 6
代码
#include <stdio.h>
int main()
{
int m,n;
scanf("%d%d",&m,&n);
int a[m][n];
int i=0,j=0,k=1;
a[0][0]=1;
k++;
while(i<m&&j<n)
{
if(i==0||j==n-1)//往下走
{
if(j==n-1)
{
i++;
}
else
{
j++;
}
for(;i<m&&j>=0;i++,j--)
{
a[i][j]=k;
k++;
}
i--;
j++;
}
else if(j==0||i==m-1)//往上走
{
if(i==m-1)
{
j++;
}
else
{
i++;
}
for(;i>=0&&j<n;i--,j++)
{
a[i][j]=k;
k++;
}
i++;
j--;
}
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
}
本文介绍了一个算法,用于在一个m*n的二维数组中,按照Z字形(Zig-Zag)路径顺序填充从1到mn的整数。算法通过判断当前位置是否位于边界来决定填充路径的方向变化,实现了一种有趣且有效的填充方式。
450

被折叠的 条评论
为什么被折叠?



