繁体   English   中英

用于遍历* n矩阵的c程序

[英]A c program to traverse a n*n matrix

我们有一个* n矩阵,例如我们取n = 4,矩阵如下所示。

 1  2  3  4
 5  6  7  8
 9 10 11 12
13 14 15 16

我们必须按顺序遍历它:

1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10

我怎样才能做到这一点?

在这种情况下,“遍历”可能意味着访问和打印每个条目。您希望从顶部开始顺时针旋转。

这是一个英语句子风格的描述,你需要做什么:

如果您可以找到转到子矩阵的TOP-LEFT元素的方法,请从左到右读取顶行中的条目,从上到下读取右列中的条目,从右到左的底行,然后从左到右的左列,你有一个迭代。 您可以使用剩余的子矩阵并继续,直到您没有任何剩余。

进一步提示:

从细胞M [x] [y],

  • M [x] [y + 1]是右边的单元格(只要y + 1 <n)
  • M [x] [y-1]是左边的单元格(只要y> 0)
  • M [x + 1] [y]是细胞BELOW(只要x + 1 <n)
  • M [x-1] [y]是单元格ABOVE(只要x> 0)

首先,尝试找到一个合适的类型来对矩阵进行建模,这样就很容易使用它。 至少,它应该是一个类型,它允许你可以通过行/列号来访问矩阵的元素,这样就可以基本上在列存取元件i和列j矩阵的m类同m(i, j)

假设您找到了这样的类型,请注意您被要求以螺旋(顺时针方式)方式迭代矩阵。 所以这里有一个重复:螺旋的每一轮与其他螺旋大致相同,只是内螺旋稍微小一点; 事实上,每个螺旋比前一个螺旋小一个恒定量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM