如何打印出如下这样的螺旋形的矩阵:

1         2  3

8   9  4

7   6  5

方法一:

static void SpiralMatrix(int count)

{

int[,] iarray = new int[count, count];

for (int i = 0; i < count; i++)

{

for (int j = 0; j < count; j++)

{

iarray[i, j] = 0;

}

}

iarray[0, 0] = 1;

int row = 0;

int col = 0;

int temprowsub = 0;

int tempcolsub = 1;

for (int i = 0; i < count * count; i++)

{

if (tempcolsub == 1)//right

{

if (col + 1 <= count - 1 && iarray[row, col + 1]==0)//right

{

iarray[row, col + 1] = iarray[row, col] + 1;

col++;

}

else if (row + 1 <= count - 1 && iarray[row + 1, col] == 0)//down

{

iarray[row + 1, col] = iarray[row, col] + 1;

temprowsub = 1;

tempcolsub = 0;

row++;

}

else

{

break;

}

}

else if (tempcolsub == -1)//left

{

if (col - 1 >= 0 && iarray[row, col - 1] == 0)//left

{

iarray[row, col - 1] = iarray[row, col] + 1;

col--;

}

else if (row - 1 >= 0 && iarray[row - 1, col] == 0)//up

{

iarray[row - 1, col] = iarray[row, col] + 1;

temprowsub = -1;

tempcolsub = 0;

row--;

}

else

{

break;

}

}

if (temprowsub == -1)//up

{

if (row-1 >=0 && iarray[row-1, col] == 0)//up

{

iarray[row-1, col] = iarray[row, col] + 1;

row--;

}

else if (col + 1 <= count - 1 && iarray[row, col + 1] == 0)//right

{

iarray[row, col + 1] = iarray[row, col] + 1;

temprowsub = 0;

tempcolsub = 1;

col++;

}

else

{

break;

}

}

if (temprowsub == 1)//down

{

if (row + 1 <= count - 1 && iarray[row+1, col] == 0)//down

{

iarray[row+1, col] = iarray[row, col] + 1;

row++;

}

else if (col - 1 >= 0 && iarray[row, col - 1] == 0)//left

{

iarray[row, col - 1] = iarray[row, col] + 1;

temprowsub = 0;

tempcolsub = -1;

col--;

}

else

{

break;

}

}

}

//TO DO:OUTPUT

……

}

方法二:

static void SpiralMatrix(int count)

{

int round = count - 1;

int[,] matrix = new int[count, count];

int num = 1;

for (int r = 0; r < round && num <= count * count; r++)

{

for (int tj = r; tj <= round - r; tj++)//top

matrix[r, tj] = num++;

for (int ri = r + 1; ri <= round - r; ri++) //right

matrix[ri, round - r] = num++;

for (int bj = round - r - 1; bj >= r; bj--)//bottom

matrix[round - r, bj] = num++;

for (int li = round - r - 1; li > r; li--)//left

matrix[li, r] = num++;

}

//TO DO:OUTPUT

……

}

方法一是菜鸟我写的,有点类似爬迷宫,代码有点烦。后来在CSDN看到一个比较简洁的(方法二),也抄上来。

转载于:https://www.cnblogs.com/morvenhuang/archive/2006/09/16/506057.html

算法基础系列之三:螺旋形矩阵相关推荐

  1. 一次递减代码matlab,DEA算法学习系列之三:一次性求解CCR模型所有DMU参数——效率、规模效益、有效性特征、调整值的matlab代码...

    <DEA算法学习系列之三:一次性求解CCR模型所有DMU参数--效率.规模效益.有效性特征.调整值的matlab代码>由会员分享,可在线阅读,更多相关<DEA算法学习系列之三:一次性 ...

  2. 算法基础系列第三章——层层推进的BFS

    最基础的穷竭搜索--宽度优先搜索 小试牛刀--走迷宫 ✒ 问题描述 ✒ 参考代码(C++版本) 知识储备

  3. 示波器基础系列之三:关于示波器的触发功能(上篇)(转载自360doc个人图书馆)

    我记得初入力科的时候,在关于示波器的三天基础知识培训中有一整天的时间都是在练习触发功能."触发"似乎是初学者学习示波器的难点.我们常帮工程师现场解决关于触发的测试问题的案例也很多. ...

  4. Solaris基础系列之三:辅助工具

    1.FlashFxp(或者其它诸多Ftp工具):通过终端对Solaris服务器进行管理,免不了要向服务器上传文件或从其上下载文件,这时候最简单最方便的方法是借助Ftp软件.在Solaris服务器上创建 ...

  5. 算法基础系列第三章——图论之最小生成树问题

  6. C++打印一个螺旋形的矩阵 a matrix traversing it spirally算法(附完整源码)

    C++打印一个螺旋形的矩阵 a matrix traversing it spirally算法 C++打印一个螺旋形的矩阵 a matrix traversing it spirally算法完整源码( ...

  7. [基础知识]Linux新手系列之三

    2019独角兽企业重金招聘Python工程师标准>>> [基础知识]Linux新手系列之三 给Linux新手 [系列之三] Linux相关资料由兄弟连分享 OK,从哪里得到Linux ...

  8. 3. oracle学习入门系列之三Unix、Linux历史及基础

    oracle学习入门系列之三Unix.Linux历史及基础 终于翻过了前面两篇,喝杯咖啡提下神,咱们继续前行.这次我们要进行操作系统方面知识了,考虑到当前时间上操作系统的多样性.变化性等,蛤蟆斟酌再三 ...

  9. OI基础系列之最大子数组问题

    OI基础系列之最大子数组问题   --Edward2414    oi退役了,虽然没取得多少成绩,也算是走过一会的人了.我相信绝大多数oi党都是自学成才,在此,我感谢那些把自己所学写到博客里的前辈们, ...

最新文章

  1. LeetCode简单题之二叉搜索树中的搜索
  2. 项目管理5大过程组,42个过程一句话讲解
  3. MySQL 5.6 Warning - Using a password on the command line interface can be insecur 解决方案
  4. Push rejected: Push to origin/master was rejected错误解决方案
  5. html5 像素人物,HTML5 Canvas 像素火焰 | 火苗
  6. 启动访问kibana
  7. Disconf 学习系列之全网最详细的最新稳定Disconf 搭建部署(基于Windows7 / 8 / 10)(图文详解)...
  8. [python教程入门学习]就业寒冬,从拉勾招聘看Python就业前景
  9. Codeigniter夸应用调用model
  10. (47)Verilog HDL UART接收设计
  11. 前端开发~uni-app ·[项目-仿糗事百科] 学习笔记 ·008【首页开发】
  12. 机器学习——HMM(隐马尔可夫模型的基本概念)(一)
  13. Python3实现顺序查找、冒泡排序、选择排序
  14. TLS协议簇加解密流程
  15. 计算机控制系统电阻加热课设,计算机控制系统课程设计资料.doc
  16. 现阶段选择ArcMap还是ArcGIS Pro
  17. ROS教程之在自己键盘上控制小海龟移动
  18. 关于光纤宽带技术,看这一篇就够啦!
  19. php定义一个矩形类rectangle,c#定义一个类圆Circle或者定义一个矩形类Rectangle,分别计算它们的周长和面积....
  20. 真机实战之VLAN隔离,助力网络安全

热门文章

  1. Linux系统编程----15(线程与进程函数之间的对比,线程属性及其函数,线程属性控制流程,线程使用注意事项,线程库)
  2. c++中的文件读写的操作
  3. Centos7下搭建LAMP环境,安装wordpress(不会生产博客,只是一名博客搬运工)(菜鸟)
  4. linux网络编程(三)select、poll和epoll
  5. Linux进程间通信:共享内存与管道
  6. 1148 Werewolf - Simple Version (20 分)
  7. 比特币源码学习笔记(一)
  8. WinPcap笔记(10):从堆文件中读取数据包
  9. 三年Java开发,尚学堂java马士兵全套
  10. Android架构师谈:View-Pager-性能优化之-无限循环