将一个二维N*N矩阵顺时针旋转90°,例如a[2][2]={1,2,3,4},旋转过后a[2][2]={4,1,3,2}。 - 教程
#include
void print_matrix(int n, int a[n][n])
{
for (int i = 0; i a[j][i] (仅 j > i,避免重复交换)
for (int i = 0; i a[i][right]
for (int i = 0; i < n; i++)
{
int left = 0, right = n - 1;
while (left < right)
{
int tmp = a[i][left];
a[i][left] = a[i][right];
a[i][right] = tmp;
left++;
right--;
}
}
}
int main(void)
{
// 示例 1:题目中的 2x2
int a2[2][2] = {
{1, 2},
{3, 4}
};
printf("原矩阵 (2x2):\n");
print_matrix(2, a2);
rotate_clockwise_90(2, a2);
printf("顺时针旋转90° 后:\n");
print_matrix(2, a2);
// 期望:3 1
// 4 2
// 示例 2:3x3 演示
int a3[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
printf("\n原矩阵 (3x3):\n");
print_matrix(3, a3);
rotate_clockwise_90(3, a3);
printf("顺时针旋转90° 后:\n");
print_matrix(3, a3);
// 期望:7 4 1
// 8 5 2
// 9 6 3
return 0;
}
运行结果:


浙公网安备 33010602011771号