让我们说我的数组看起来像这样。行数将始终与该程序中的列数匹配。
[[0]
[1]
[2]
[[3]
[4]
[5]
[[6]
[7]
[8]
我需要将其转换为相反的形式:
[[2]
[1]
[0]
[[5]
[4]
[3]
[[8]
[7]
[6]
我知道多维数组只是数组的数组,希望将我的问题的范围缩小到只反转一维数组,但是我不知道如何将相同的想法应用于二维数组。大小将不会始终是3 x 3的数组,但是行和列将始终是相同的数字。
您可以使用简单的递归来做到这一点:
int rows, columns;
void reverseMatrix(int[rows][columns] m, int i, int j){
if(j == rows) return;
if(i >= columns - i - 1) reverseMatrix(m, 0, j + 1);
else {
int aux = m[i][j];
m[i][j] = m[columns - i - 1][j];
m[columns - i - 1][j] = aux;
reverseMatrix(m, i + 1, j);
}
}
尝试下面的代码,这里n是行数,m是列数。希望这可以解决您的问题。编码愉快!
for(i = 0; i < n; i++) {
for(j = 0; j < m/2; j++) {
int temp = arr[i][j];
arr[i][j] = arr[i][m-j-1];
arr[i][m-j-1] = temp;
}
}