我在部分家庭作业上遇到了麻烦。基本上,我们要做的是采用一个充满随机数的二维数组,并对每一行,每列和对角线求和。我已经找到了行和列,但无法获得对角线。这是我的对角线代码:
for (int c = 0 ; c < columnCount; c++)
{
int sum = 0;
for (int i = (7 - c); i >= 0; i--)
{
sum += board[(7 - c) - i][i];
}
return sum;
}
我已经得到了一些对角线,但无法弄清楚如何得到其余的。例如:
_ 0 1 2 3 4 5 6 7
0 X X X X X X X X
1 X X X X X X X
2 X X X X X X
3 X X X X X
4 X X X X
5 X X X
6 X X
7 X
正如你所看到的,我只总计了一半的棋盘(每次从右上角到左下角)。我最终还需要将对角线的方向相加......如果有人对此有所了解的话。
我已经在这里和其他网站上了解过,但我唯一能找到的是如何总结主要对角线。我需要在8X8板上对每一个对角线求和。我真的想过这个,但无论我尝试什么,我都无法在没有超出限制的情况下获得其他价值。我感谢任何帮助!
答案 0 :(得分:0)
有很多选择可以做到这一点。根据您当前使用的方法(并尝试与之保持一致),我建议您从第1-7行开始并完成缺失的摘要(提示:对于其余项目,从右边缘开始并移动)向下和左)。
pmkrefeld在评论中链接的问题包含了执行此操作的代码(假设,我没有看到它,也不知道它是否真的有效)。那里的答案刚刚送出。这是工作代码,但您将通过尝试自己实现它来了解更多信息。
有时候将这些东西写在纸上是有帮助的。绘制阵列,然后思考:人类将如何做到这一点?如果你能够以这种方式提出一个清晰的算法并围绕它,那么将它转换为Java(或任何语言)将变得很简单。
答案 1 :(得分:0)
为了计算矩阵的剩余部分,您可以在代码下面插入两个嵌套for循环。像这样的东西 -
sum = 0;
int t,k;
int result[] = new int[20];
for(c = 1; c <= 7; c++) {
t = c;
for(i = 7; i >= c; i--) {
sum += board[i][t];
t++;
}
result[k] = sum; // result[k] will store each diagonal sum
k++;
sum = 0;
}