題目:圖片旋轉是對圖片最簡單的處理方式之一,在本題中,你需要對圖片順時針旋轉 90 度。
我們用一個?n×m的二維數組來表示一個圖片,例如下面給出一個?3×4 的 圖片的例子:
1 3 5 7
9 8 7 6
3 5 9 7
這個圖片順時針旋轉 90 度后的圖片如下:
3 9 1
5 8 3
9 7 5
7 6 7
給定初始圖片,請計算旋轉后的圖片。
輸入描述
輸入的第一行包含兩個整數?n,m,分別表示行數和列數。
接下來?n 行,每行?m 個整數,表示給定的圖片。圖片中的每個元素(像 素)為一個值為 0 至 255 之間的整數(包含 0 和 255)。
輸出描述
輸出?m?行?n?列,表示旋轉后的圖片。
輸入輸出樣例
示例
輸入
3 4
1 3 5 7
9 8 7 6
3 5 9 7
輸出
3 9 1
5 8 3
9 7 5
7 6 7
解題思路+代碼:
代碼:
import java.util.Scanner;
// 1:無需package
// 2: 類名必須Main, 不可修改public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);int n = scan.nextInt(); //獲取數組的行數int m = scan.nextInt(); //獲取數組的列數int[][] orignalMatrix = new int[n][m]; //創建數組for(int i = 0; i< n; i++){for(int j = 0; j<m ; j++){orignalMatrix[i][j] = scan.nextInt(); //獲取到的原矩陣(數組)}}//將矩陣旋轉90度//創建新矩陣行列互換int[][] rotateMatrix = new int[m][n]; //新矩陣行列互換for(int i = 0; i<n; i++){for(int j = 0; j<m; j++){rotateMatrix[j][n-1-i] = orignalMatrix[i][j]; //反轉矩陣 根據原矩陣和反轉的矩陣得出}}for(int i = 0;i<rotateMatrix.length;i++){for(int j = 0;j<rotateMatrix[i].length;j++){System.out.print(rotateMatrix[i][j] + " ");}System.out.println();}scan.close();}
}
總結:一道常規的數組(矩陣)旋轉題,關鍵難點還是怎么旋轉90度?我的想法是用數組中的坐標來進行轉換,原矩陣的行與轉換后的矩陣列相同,只有原矩陣的列與轉換后的矩陣行需要用坐標來推出來,后面進行常規的數組打印即可。