如果可以从一维数组中获取行和列,请提供以下宽度和公式。您将如何获得对角线和反对角线?我的例子很简单。寻找可以扩展到MxN的东西,这很普遍。
伪码
A = array[26];
width = 5;
row(index) = floor((index / width))
column(index) = index % width
digonal(index) = //???
antidigonal(index) = //???
示例值
row 5: 26 27 28 29 30
row 4: 21 22 23 24 25
row 3: 16 17 18 19 20
row 2: 11 12 13 14 15
row 1: 6 7 8 9 10
row 0: 1 2 3 4 5
--------------------------
column: 0 1 2 3 4
diag 0: 1
diag 1: 6, 2
diag 2: 3, 7, 11
diag 3: 4, 8, 12, 16
etc.
antidiag 0: 5
antidiag 1: 4, 10
antidiag 2: 3, 9, 15
etc.
与How to get row and column from index?相关
最佳答案
根据示例中的编号...。
对角k指数为:
i * width + k - i
因为我的范围是0到k。
例如,要打印对角线k,
for(int i = 0; i <= k; i++) {
System.out.println(array[i * (width - 1) + k]);
}
上面的循环是用Java编写的,javascript循环与此类似。
这给出了从对角线0到对角线宽度-1的对角线。
对于其余的对角线,请为每个k使用(其中k的范围为宽度到2 *宽度-1)
for(int i = k - (width - 1); i < width - 1; i++) {
System.out.println(array[i * (width - 1) + k]);
}
例如,如果宽度为5,则在第一个for循环中使用k = 0到4,然后在第二个for循环中使用k = 6到9,得到9个对角线。
对于反对角线索引,只需从width-1中减去每个对角线值
width - 1 - (i * width + k - i)
对于我的范围如上面for循环所示
关于javascript - 如何获得对 Angular 线和反对 Angular 线数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48195338/