计蒜客之矩阵翻转

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计蒜客之矩阵翻转相关的知识,希望对你有一定的参考价值。

问题:

晓萌最近在做一个翻转图片的应用,你可能也知道,图片其实是由一个个的点组成的。于是,晓萌想先做一个可以翻转矩阵的程序,来解决他问题的核心部分。

输入第一行包括由空格分开的整数 M、N、T(0 < M < 200,0 < N < 200,T=0或1),其中 M 和 N 分别表示待处理矩阵的行数与列数,T 为 0 时表示左右翻转,为 1 时表示上下翻转。

之后的 M 行,每行包括由空格分隔的 N 个整数,依次为输入矩阵的每一行的数据。

输出包括 M 行 N 列,每个数字之间用一个空格分隔,每一行行末均有一个空格,表示的是按照要求翻转后的矩阵。

样例输入

4 4 1
1 2 3 4
5 6 7 8
9 0 1 2
3 4 5 6
 

样例输出

3 4 5 6 
9 0 1 2 
5 6 7 8 
1 2 3 4 
 
C++代码实现:
 
 1 #include<iostream>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     int i,j,M,N,T;
 7     int arr[200][200];
 8     cin>>M>>N>>T;
 9 
10     for(i=0;i<M;i++)
11     {
12         for(j=0;j<N;j++)
13         {
14             cin>>arr[i][j];
15         }
16     }
17 
18     if (T==0)
19     {
20         for(i=0;i<M;i++)
21         {
22             for(j=1;j<=N;j++)
23             {
24                 cout<<arr[i][N-j]<<" ";
25                 if(j%N==0)//每一行行末留一个空格
26                 cout<<endl;
27             }
28         }
29 
30     }
31 
32     if (T==1)
33     {
34         for(i=1;i<=M;i++)
35         {
36             for(j=0;j<N;j++)
37             {
38                 cout<<arr[M-i][j]<<" ";
39                  if((j+1)%N==0)//每一行行末留一个空格
40                 cout<<endl;
41             }
42         }
43 
44     }
45     return 0;
46 }

 

以上是关于计蒜客之矩阵翻转的主要内容,如果未能解决你的问题,请参考以下文章

蓝桥杯-计蒜客之踏青

蓝桥杯-计蒜客之墙壁涂色

计蒜客之合法分数的组合

计蒜客之斐波那契数列

计蒜客 蓝桥模拟 A. 结果填空:矩阵求和

计蒜客模拟赛D1T1 蒜头君打地鼠:矩阵旋转+二维前缀和