1 solutions
-
1
P1012 帮帮flying吧
一.解题思路
1.碎碎念
在这里,我要狠狠的开喷出题人了,what are you 弄啥嘞!
什么叫 m行n列 !!!正常人不都是输入 n行m列 吗?!你知道就因为这个我debug了将近一个小时吗😭
你不准出题**@demon**了,你出的好反人类!!!
2.题目分析
一道矩阵变换题,做法其实挺多的,这里我就讲一下最方便的一种解法吧——直接按照题目的要求输出原数组即可
怎么做捏,其实很简单,现在看到这还没有思路的人立刻拿出纸笔或者平板,把这个样例和样例输出写出来
然后捏,观察!没错,瞪眼法
注意到! 输出的结果顺序是从原数组左下角向上输出,然后换到下一列,以此类推
那么现在显而易见了,我们只需要模拟这个顺序输出就好了,完全不需要做任何改动
理论存在,实践开始!
3.算法实现
?这咋说,你就照着输出呗,还有啥讲的,这个不会罚你去刷cpp入门题单!
开玩笑还是讲一下吧
我们只需要让数据从左下角开始读,一直读到左上角即可
也就是
for(int j = 0;j<n;++j){ for(int i = m-1;i>=0;--i){ cout<<num[i][j]<<' '; } cout<<'\n'; }好了别看了真没啥好讲了
4.复杂度
1.时间:O(m × n)
2.空间:O(m × n)
二.完整代码
#include <bits/stdc++.h> using namespace std; #define int long long signed main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int m,n; cin>>m>>n; vector<vector<int>> num(m,vector<int>(n)); for(int i = 0;i<m;++i){ for(int j = 0;j<n;++j){ cin>>num[i][j]; } } for(int j = 0;j<n;++j){ for(int i = m-1;i>=0;--i){ cout<<num[i][j]<<' '; } cout<<'\n'; } return 0; }
PS:非专业题解!有任何错误记得联系我!!!
Information
- ID
- 13
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 2
- Tags
- (None)
- # Submissions
- 8
- Accepted
- 7
- Uploaded By