【发布时间】:2021-03-04 03:59:48
【问题描述】:
我正在玩 c 中的二维数组,我想知道如何完全和对角地遍历二维数组。
水平方向,在维度矩阵width,height
你可以遍历每个索引i,并检查索引j处的元素
类似:
const int width = 10;
const int height = 10;
const int mat[width][height] = {0};
for (i = 0, i<width, i++){
for (j = 0; j<height; j++){
mat[i][0] = j;
}
}
我只是随机添加了一些东西,所以循环做了一些事情......但是,关键是我在正确的方向上遍历
垂直方向类似,但有一些翻转参数
然而对角线……我有点迷茫;我想不出一种以对角线方式穿越的方法。从概念上讲,我可能希望按以下顺序点击 4x3 矩阵:
1 2 4 7
3 5 8 10
6 9 11 12
或者使用索引i,j:
0,0 ->
1,0 -> 0,1 ->
2,0 -> 1,1 -> 0,2 ->
2,1 -> 1,2 -> 0,3 ->
2,2 -> 1,3 ->
2,3
有没有一种直接的方法来点击这些元素(不一定按照每个说的顺序,但我认为对角递增会很有用)
另外,是否可以检查相反方向的对角线?
【问题讨论】:
-
for (int i=0; i<min(width, height); i++) matrix[i][i] = blah;。这是左上角的对角线说明。如果需要其他对角线,您可以移动索引。 -
在 stackoverflow 上发布问题之前,您应该通过检查该主题已经存在的问题和答案来节省大家的时间:stackoverflow.com/questions/44131720/check-2d-array-diagonally、stackoverflow.com/questions/50013211/…、
-
这能回答你的问题吗? Traverse Matrix in Diagonal strips