将矩阵旋转180度逆时针问题

时间:2017-11-12 19:21:44

标签: c++ arrays

我有这个代码,它应该将矩阵逆时针旋转180度,但当行和列的数量不均匀时,最终矩阵的中间线保持不变

    for (int index1 = 0; index1 <n / 2; index1++)
        for (int index2 = 0; index2 < n; index2++)
            swap(mat[index1][index2], mat[n - index1 - 1][n - index2 - 1]);

否则,代码适用于偶数行和列

1 个答案:

答案 0 :(得分:0)

您可能想要计算掉期金额,以便在完成矩阵的一半后,您可以结束它:

for (int index1 = 0, cntSwap = 0, maxSwap = (n*m) / 2; cntSwap < maxSwap; ++index1)
    for (int index2 = 0; index2 < m && cntSwap < maxSwap; ++index2, ++cntSwap)
        std::swap(mat[index1][index2], mat[n - index1 - 1][m - index2 - 1]);