二维数组矩阵;阅读对角线
2D Array Matrix; Reading Diagonals
我正在尝试为 5x5 矩阵编写一个方法来提供输出:
00004
00030
00200
01000
00000
我对该特定代码的输出是:
40000
03000
00200
00010
00000
本质上,我试图从右到左而不是从左到右读取数组。
我的参数是我只能使用一个 for 循环,不能对方法中的值进行硬编码。
有什么办法可以通过简单的更改来实现吗?
private static void fillDiagonal_2( int[][] m )
{
for (int row=0; row<m.length; ++row)
{
m[row][row]=row;
System.out.print(m[row][row]);
}
}
for (int row = 0; row < m.length; ++row)
{
m[row][m.length - row] = row;
System.out.print(m[row][row]);
}
应该可以。
编辑:
您应该在 for 循环之外声明一个变量,这样您就不会每次都记得 m.length 。
int length = m.length - 1;
for (int row = 0; row <= length; ++row)
{
m[row][length - row] = row;
System.out.print(m[row][row]);
}
试试看。
这应该有效:
int len = m.length;
for (int i = 0; i < (len * len); i++) {
System.out.print(m[i / len][len - (i % len) - 1]);
}
示例:
int m[][] = new int[][]{{0, 0, 0, 0, 4}, {0, 0, 0, 3, 0}, {0, 0, 2, 0, 0}, {0, 1, 0, 0, 0}, {0, 0, 0, 0, 0}};
输出:
4000003000002000001000000
它的工作原理是将每个索引 i
关联到矩阵 m
中的一个位置,使用长度:
i -> m[i / len][len - (i % len) - 1]
0 -> m[ 0 ][ len - 1 ]
1 -> m[ 0 ][ len - 2 ]
2 -> m[ 0 ][ len - 3 ]
3 -> m[ 0 ][ len - 1 ]
4 -> m[ 0 ][ len - 1 ]
5 -> m[ 1 ][ len - 1 ]
6 -> m[ 1 ][ len - 2 ]
7 -> m[ 1 ][ len - 3 ]
...
我正在尝试为 5x5 矩阵编写一个方法来提供输出: 00004 00030 00200 01000 00000
我对该特定代码的输出是: 40000 03000 00200 00010 00000
本质上,我试图从右到左而不是从左到右读取数组。 我的参数是我只能使用一个 for 循环,不能对方法中的值进行硬编码。
有什么办法可以通过简单的更改来实现吗?
private static void fillDiagonal_2( int[][] m )
{
for (int row=0; row<m.length; ++row)
{
m[row][row]=row;
System.out.print(m[row][row]);
}
}
for (int row = 0; row < m.length; ++row)
{
m[row][m.length - row] = row;
System.out.print(m[row][row]);
}
应该可以。
编辑: 您应该在 for 循环之外声明一个变量,这样您就不会每次都记得 m.length 。
int length = m.length - 1;
for (int row = 0; row <= length; ++row)
{
m[row][length - row] = row;
System.out.print(m[row][row]);
}
试试看。
这应该有效:
int len = m.length;
for (int i = 0; i < (len * len); i++) {
System.out.print(m[i / len][len - (i % len) - 1]);
}
示例:
int m[][] = new int[][]{{0, 0, 0, 0, 4}, {0, 0, 0, 3, 0}, {0, 0, 2, 0, 0}, {0, 1, 0, 0, 0}, {0, 0, 0, 0, 0}};
输出:
4000003000002000001000000
它的工作原理是将每个索引 i
关联到矩阵 m
中的一个位置,使用长度:
i -> m[i / len][len - (i % len) - 1]
0 -> m[ 0 ][ len - 1 ]
1 -> m[ 0 ][ len - 2 ]
2 -> m[ 0 ][ len - 3 ]
3 -> m[ 0 ][ len - 1 ]
4 -> m[ 0 ][ len - 1 ]
5 -> m[ 1 ][ len - 1 ]
6 -> m[ 1 ][ len - 2 ]
7 -> m[ 1 ][ len - 3 ]
...