Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
遍历n*n矩阵的c程序_C - Fatal编程技术网

遍历n*n矩阵的c程序

遍历n*n矩阵的c程序,c,C,我们有一个n*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 我该怎么做呢?在这种情况下,“遍历”可能意味着访问和打印每个条目。您希望从顶部开始以顺时针螺旋的方式遍历它 以下是你需要做什么的英文句子描述: 如果您可以找到一种方法,转到子矩阵的左上角元素,从左到右读取顶行中的

我们有一个n*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
我该怎么做呢?

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

以下是你需要做什么的英文句子描述:

如果您可以找到一种方法,转到子矩阵的左上角元素,从左到右读取顶行中的条目,从上到下读取右列中的条目,从右到左读取底行中的条目,然后从下到左读取左列中的条目,那么您有一个迭代。您可以获取剩余的子矩阵并继续,直到什么都没有剩下

进一步提示:

从单元格M[x][y]

  • M[x][y+1]是右边的单元格(只要y+10)
  • M[x+1][y]是下面的单元格(只要x+10)

首先,试着找到一个合适的类型来为矩阵建模,这样就很容易使用它。至少,它应该是一种允许您通过行/列号访问矩阵中元素的类型,这样您基本上可以访问矩阵
m
的行
i
和列
j
中的元素,类似于
m(i,j)

假设您发现了这样一种类型,请注意,要求您以螺旋(按时钟)方式迭代矩阵。这里有一个重复:螺旋的每一圈都和其他的差不多,只是内部的螺旋稍微小一点;事实上,每个螺旋都比前一个螺旋小一个常量