概述
题目:
输入一个M*N的矩阵,按之字形将矩阵元素提取/打印出来。
分析:
容易知道,对角线方向的行数(如<1,2>、<5,4,3>)为M+N,由于元素在对角线方向的奇数行和偶数行增大的方向正好相反,可由此入手,用一个变量s(0<s<M+N)记录对角线行数的序号,在奇偶行上分别控制序列移动和边界条件。需要注意的是到达对角线行终点后元素的移动方向,有两种情况——向下和向右,此处边界条件的设置比较关键。
代码:
#include <iostream>
using namespace std;
int main(int argc, char const *argv[])
{
int i=0,j=0,s=0,m,n,k=0;//s为斜线数目
cin>>m>>n;
int a[m][n]={0};
for(s=0;s<m+n-1;s++){
/*奇数行*/
if((i+j)%2==0){
while(i<m&&j>0)
a[i++][j--]=k++;
if(i==m){//向右移动
j+=2;
i=m-1;
}
else if(j<0)
j=0;//向下移动
}
/*偶数行*/
else{
while(j<n&&i>=0)
a[i--][j++]=k++;
if(j==n){
i+=2;//向下移动
j=n-1;
}
else if(i<0)
i=0;//向右
}
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
cout<<a[i][j]<<'t';
cout<<endl;
}
return 0;
}
最后
以上就是迷人花生为你收集整理的之字形(Zigzag)遍历/打印/提取矩阵元素算法的全部内容,希望文章能够帮你解决之字形(Zigzag)遍历/打印/提取矩阵元素算法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复