一天敲五十道洛谷入门题
题目描述
输入一个 n 行 m 列的黑白图像,将它顺时针旋转 90度后输出。
输入格式
第一行包含两个整数
n 和 m,表示图像包含像素点的行数和列数。
1≤n≤100,1≤m≤100。
接下来
n 行,每行 m 个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格隔开,每个元素均在 0∼255 之间。
输出格式
m 行,每行 n 个整数,为顺时针旋转 90 度后的图像。相邻两个整数之间用单个空格隔开。
我的思路:从数组第一列开始,从每一列的最后一行开始输出即可 。
如:
1 2 3 4
5 6 7 8,遍历顺序就是5、1 换行;再6、2 换行;…
#include<bits/stdc++.h>
using namespace std;
int main(){
int m,n;
cin>>m>>n;
int a[m][n];
//遍历数组的每一列,从每一列的最后一行开始输出即可
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
cin>>a[i][j];
}
}
for(int j=0;j<n;j++){
for(int i=m-1;i>=0;i--){
cout<< a[i][j]<<" ";
}
cout<<endl;
}
}