我有这个代码,它应该将矩阵逆时针旋转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]);
否则,代码适用于偶数行和列
答案 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]);