按列从下到上读取原图,直接生成顺时针旋转 90 度后的图像。
OJ: noi_openjudge
题目 ID: ch0108-11
难度:入门
标签:矩阵模拟python
日期: 2026-07-30 23:01
题意
将
思路
旋转结果的每一行对应原图的一列,且该列要从下到上读取。外层枚举原列,内层从最后一行到第一行输出。
代码
cpp
#include <cstdio>
int n,m,k;
int a[200][200];
int b[200][200];
int c[200][200];
int main(){
int i,j;
scanf("%d%d",&n,&m);
for (i=1;i<=n;i++){
for (j=1;j<=m;j++){
scanf("%d",&a[i][j]);
}
}
for (i=1;i<=n;i++){
for (j=1;j<=m;j++){
b[j][n-i+1]= a[i][j];
}
}
for (i=1;i<=m;i++){
for (j=1;j<=n;j++){
printf("%d ",b[i][j]);
}
printf("\n");
}
return 0;
}复杂度
总结
Python代码
python
row_count, column_count = map(int, input().split())
image = [input().split() for _ in range(row_count)]
for column in range(column_count):
print(*(image[row][column] for row in range(row_count - 1, -1, -1)))C++代码
cpp
#include <cstdio>
int n,m,k;
int a[200][200];
int b[200][200];
int c[200][200];
int main(){
int i,j;
scanf("%d%d",&n,&m);
for (i=1;i<=n;i++){
for (j=1;j<=m;j++){
scanf("%d",&a[i][j]);
}
}
for (i=1;i<=n;i++){
for (j=1;j<=m;j++){
b[j][n-i+1]= a[i][j];
}
}
for (i=1;i<=m;i++){
for (j=1;j<=n;j++){
printf("%d ",b[i][j]);
}
printf("\n");
}
return 0;
}复杂度
时间复杂度为
总结
矩阵旋转可转化为明确的行列读取顺序,无需额外构造结果矩阵。