计蒜客之矩阵翻转
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
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
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 }
以上是关于计蒜客之矩阵翻转的主要内容,如果未能解决你的问题,请参考以下文章