计蒜客中第5题 矩阵翻转问题 java语言

晓萌最近在做一个翻转图片的应用,你可能也知道,图片其实是由一个个的点组成的。于是,晓萌想先做一个可以翻转矩阵的程序,来解决他问题的核心部分。
输入第一行包括由空格分开的整数M、N、T(0 < M < 200,0 < N < 200,T=0或1),其中M和N分别表示待处理矩阵的行数与列数,T为0时表示左右翻转,为1时表示上下翻转。
之后的M行,每行包括由空格分隔的N个整数,依次为输入矩阵的每一行的数据。
输出包括M行N列,每个数字之间用一个空格分隔, 每一行行末均有一个空格,表示的是按照要求翻转后的矩阵。

样例1

输入:

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
java代码解决:
import java.util.Scanner;
public class 矩阵翻转 {
	public static void main(String[] args) {
    Scanner s=new Scanner(System.in);
    int M=s.nextInt();//接收輸入的行數
    int N=s.nextInt();//接收輸入的列數
    int T=s.nextInt();//接收T=0或者T=1,
    int a[][]=new int[M][N];//表示接收的數組
    int b[][]=new int[M][N];//转换后的数组
    for (int i = 0; i <M; i++) //行循环
		for (int j = 0; j < N; j++) //列循环
			a[i][j]=s.nextInt();//接收输入的数字
    if(T==1){//上下翻转
    	for (int i = M-1; i>=0; i--) {//从最后一行开始
			for (int j = 0; j < N; j++) {
				b[i][j]=a[i][j];
				if(j<N-1)//换行输出判断
			  System.out.print(b[i][j]+" ");
				else System.out.println(b[i][j]+" ");
			}
		}
    }if(T==0){//左右翻转
    	for (int i = 0; i <M; i++) {
			for (int j = N-1; j>=0; j--) {
				b[i][j]=a[i][j];
				if(j==0)
					System.out.println(b[i][j]+" ");
				else System.out.print(b[i][j]+"");
			}
		}
    }
	}


}
 
   
 
   
 
  

你可能感兴趣的:(java,ACM计蒜客)