MxN阶螺旋矩阵

编程入门 行业动态 更新时间:2024-10-15 14:14:06

MxN阶螺旋<a href=https://www.elefans.com/category/jswz/34/1769510.html style=矩阵"/>

MxN阶螺旋矩阵

闲的无聊翻到老早的草稿纸上有乱画的螺旋矩阵的算法,虽然已过了纠结算法的时候,写出来打发时间吧,短短五十行代码,么想到也耗了一下午时间。算法部分不过一个switch,有效语句不过十几行。变量名注释都很清楚,有需要的可以瞧瞧。也瞧过网上其他人的,太复杂。

思路:开始也按网上的二维数组思路,越搞越复杂,理不清头绪。吃了两袋口水娃,豁然开朗,这不就是一条盘起来的shit吗?明明是一维数组,这样一来就简单了。只要将这条shit每盘一节转个方向就好了,所以一个循环就搞定了。

//
//螺旋矩阵
//
#include #include int main(int argc, char argv[])
{const int _Max_M = 15;//行const int _Max_N = 10;//列int array[_Max_M][_Max_N] = {0}, begin = 1, i = 0, j = 0, left = 0, top =0, right = _Max_N-1, bottom = _Max_M-1;int direction = 0;//0右,1下,2左,3上for (int data = begin; data <= begin+_Max_N*_Max_M-1; ++data){array[i][j] = data;printf("[%d][%d]=%d\t", i, j,array[i][j]);//过程打印if(!(data%5))std::cout<<"\n";switch (direction){case 0:++j;if(j == right){direction = ++direction%4;--right;}break;case 1:++i;if(i == bottom){direction = ++direction%4;--bottom;}break;case 2:--j;if(j == left){direction = ++direction%4;++left;}break;case 3:--i;if(i-1 == top){direction = ++direction%4;++top;std::cout<<"\n\n";}break;}}std::cout<<"\n=============================================\n"<

结果

更多推荐

MxN阶螺旋矩阵

本文发布于:2024-02-26 09:17:21,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1701999.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:矩阵   螺旋   MxN

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!