有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

为什么当我们想要水平/垂直旋转矩阵时,我们要把这个项除以2?

我试着将矩阵水平/垂直旋转,但不明白怎么做,在我搜索这里后,我发现每个人都将这个词除以2,我真的想知道为什么它如此重要,如果我不这样做,矩阵将保持不变, 我们将行划分为2的示例:

int temp;
for (int i = 0 ; i < getRows() / 2 ; i++)
{
    for (int j = 0; j < getColumns() ; j++)
    {
        temp = _matrixArray[i][j];
        _matrixArray[i][j] = _matrixArray[_matrixArray.length - 1 - i][j];
        _matrixArray[_matrixArray.length - 1 -i][j] = temp;
    }

}

提前谢谢


共 (2) 个答案

  1. # 1 楼答案

    希望我能正确理解你的问题,我可以说原因是下一个:你从两个方向同时读取矩阵中的数据,从左到右(0到n/2)和从右到左(n到n/2+1),并逐步交换这两个(0与n-1,1与n-2,…,n-k与n-k+1),因此,当你达到其大小的一半,你把它们都换了,这意味着你进行了轮换

  2. # 2 楼答案

    您在这里复制的代码通过第0行进行垂直反射。。。[n/2]并将它们与行[n/2]交换。。。n-1。我用括号[]表示四舍五入。那么,你看到循环只需要上升到[n/2]吗