Zig-Zag模式填充矩阵

本文介绍了一个算法,用于在一个m*n的二维数组中,按照Z字形(Zig-Zag)路径顺序填充从1到mn的整数。算法通过判断当前位置是否位于边界来决定填充路径的方向变化,实现了一种有趣且有效的填充方式。

描述
在这里插入图片描述
在一个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");
 }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值