【发布时间】:2014-11-13 08:08:28
【问题描述】:
1 2 3
4 5 6
7 8 9
这是我的普通数组,但我需要像这样对角线
1 2 4
3 5 7
6 8 9
这是使它工作的非常愚蠢的方法,但即使它不起作用,因为我无法找到第二列元素。
for (i = 0; i < arr.length; ++i) {
for (n = 0; n < arr[0].length; ++n) {
if (i == 0 && n == 0){
arr[i][n] = 0;
} else if (i == 0 && n == 1) {
arr[i][n] = 2;
} else if (i == 1 && n == 0) {
arr[i][n] = 3;
} else if (n == 0) {
arr[i][n] = arr[i - 1][n] - arr[i - 2][n] + 1 + arr[i - 1][n];
} else {
arr[i][n] = arr[i][n - 1] - arr[i][n - 2] + 1 + arr[i][n - 1];
}
}
}
【问题讨论】:
-
@nem 不太看它。虽然很接近。这基本上是一种比实际更难可视化的算法。
-
类似这个问题stackoverflow.com/questions/5833529/… 不完全一样但是原理差不多。
-
这实际上是 SO 的缺点。应标记为“重复”的问题获得评级。这里已经存在几乎相同的问题:stackoverflow.com/questions/1779199/…