1 条题解
-
0
自动搬运
来自洛谷,原作者为

ImposterAnYu
I love barbara forever! | q3572195459 wx rzbxs3288,要电话请私信搬运于
2025-08-24 21:07:20,当前版本为作者最后更新于2021-07-03 15:56:00,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
开篇话
这道题乍一看还挺难的,但是发现方法后就好办了。
简便做法
首先开一个二维数组 (
我的前教练告诉我,数组开得比数据范围大 是个好习惯)。这道题让我们将读入的二维数组(即图像)顺时针旋转 度以后输出。但是如果我们真的写一个这样的程序的话会十分麻烦,那有没有简便的写法呢?答案是肯定的!那具体怎么简便呢?
我们设样例的输入为:
a[1][1] a[1][2] a[1][3] a[2][1] a[2][2] a[2][3] a[3][1] a[3][2] a[3][3]那么,想要得到样例输出的话,就要:
1.每次先将图像做左右对称处理,得到下图↓
a[1][3] a[1][2] a[1][1] a[2][3] a[2][2] a[2][1] a[3][3] a[3][2] a[3][1]2.再将 (前下标) 和 (后下标) 换过来,就可以得到输出!
a[3][1] a[2][1] a[1][1] a[3][2] a[2][2] a[1][2] a[3][3] a[2][3] a[1][3]3.用代码实现,就是:
for(i = 1; i <= m; i++){ for(j = n; j >= 1; j--) cout<< a[j][i] << " " ; cout<< endl; }AC code
#include <bits/stdc++.h>//万能头文件(但不是彻底万能的) using namespace std; int m,n,a[105][105],i,j; int main(){ cin >> n >> m; for(i = 1; i <= n; i++) for(j = 1; j <= m; j++) cin >> a[i][j];//读入二维数组里的每一个元素。 for(i = 1; i <= m; i++){ for(j = n; j >= 1; j--) cout<< a[j][i] << " " ;//将图像顺时针旋转 90 度输出。 cout<< endl; } return 0; }
- 1
信息
- ID
- 6964
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 1
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者