輸入一個N*N的矩陣,得到這個矩陣的順時針旋轉90度的矩陣。
代碼如下:
import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); String str = input.nextLine(); String[] strArr = str.split(" "); int[][] matrix = new int[strArr.length][strArr.length]; int N = strArr.length; for(int i = 0;i<strArr.length;i++){ matrix[0][i] = Integer.valueOf(strArr[i]); } for(int i = 0;i<N*(N-1);i++){ matrix[i/N+1][i%N] = input.nextInt(); } int res[][] = rotate(matrix); for(int i = 0;i<N ;i++){ for(int j=0;j<N;j++){ if(j==(N-1)){ System.out.print(res[i][j]); System.out.println(); }else{ System.out.print(res[i][j]+" "); } } } } public static int[][] rotate(int[][] matrix) { int n = matrix.length; int limit = (n-1)/2; for(int i=0;i<= limit; i++){ for(int j=i;j<n-1-i;j++){ int temp = matrix[i][j]; matrix[i][j] = matrix[n-1-j][i]; matrix[n-1-j][i] = matrix[n-1-i][n-1-j]; matrix[n-1-i][n-1-j] = matrix[j][n-1-i]; matrix[j][n-1-i] = temp; } } return matrix; } }
有一個問題時不知道如何判斷java輸入什么時候結束。這里是N*N的矩陣,所以根據第一行的輸入可以判斷矩陣的階數,進而知道矩陣輸入什么時候結束,如果N*M的矩陣就沒轍了。