输入有多组数据。 每组输入一个5 * 5的数组,然后输入一行,这一行有四个数,前两个代表操作类型,后两个数x y代表需操作数据为以x y为左上角的那几个数据。
输出翻转后的数组。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 1 3 1 1
11 6 1 4 5 12 7 2 9 10 13 8 3 14 15 16 17 18 19 20 21 22 23 24 25
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while(scanner.hasNext()) { int[][] arr = new int[5][5]; for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { arr[i][j] = scanner.nextInt(); } } int a = scanner.nextInt(); int b = scanner.nextInt(); //对应下标为x-1,y-1 int x = scanner.nextInt(); int y = scanner.nextInt(); //获取以x,y为左上角的b²个数 int[][] arrBefore = new int[b][b]; for (int i = 0; i < b; i++) { for (int j = 0; j < b; j++) { arrBefore[i][j] = arr[i+x-1][j+y-1]; } } //将这些数按要求旋转 int[][] arrFlip = flip(arrBefore, a, b); for (int i = 0; i < arrFlip.length; i++) { for (int j = 0; j < arrFlip.length; j++) { arr[i+x-1][j+y-1] = arrFlip[i][j]; } } //输出旋转后的数组 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(arr[i][j]+" "); } System.out.println(); } } } public static int[][] flip(int[][] arrBefore,int a,int b) { int[][] arrFlip = new int[b][b]; if (a == 1) { //顺时针翻转90度 for (int i = 0; i < b; i++) { for (int j = 0; j < b; j++) { arrFlip[i][j] = arrBefore[b-j-1][i]; } } return arrFlip; }else if (a == 2) { //逆时针翻转90度 for (int i = 0; i < b; i++) { for (int j = 0; j < b; j++) { arrFlip[i][j] = arrBefore[j][b-i-1]; } } return arrFlip; } return arrFlip; } }