package think_about;
import java.util.Scanner;
// 螺旋矩阵
/*
1 2 3
8 9 4
7 6 5
做着做着差点忘了,二维数组第一位数横着的,第二个下标才是竖着的
*/
public class RotationMatrix {
static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("请输入一个数字:");
int n = scanner.nextInt();
int[][] array = new int[n][n];
int i, j, num = 1;
System.out.println("顺时针旋转:");
for (int m = 0; m < n / 2; m++){
for (j = m; j < n - m;j++){ //右
array[m][j] = num++;
}
for(i = m + 1; i < n - m -1; i++){ // 下
array[i][n - m -1] = num++;
}
for (j = n - m - 1; j >= m; j--){ // 左
array[n - m - 1][j] = num++;
}
for (i = n - m -2; i >= m + 1; i--){ // 上
array[i][m] = num++;
}
}
if (n % 2 == 1){
array[n / 2][n / 2] = num++;
}
for (i = 0; i < n; i++){
for (j = 0; j < n; j++){
System.out.print(array[i][j]+"\t");
}
System.out.println();
}
num = 1;
System.out.println("逆时针旋转:");
for (int m = 0; m < n / 2; m++){
// 左
for (j = n - m - 1; j >= m;j--){
array[m][j] = num++;
}
// 下
for (i = m + 1; i < n - m -1; i++){
array[i][m] = num++;
}
// 右
for (j = m; j < n - m ; j++){
array[n - m - 1][j] = num++;
}
// 上
for (i = n - m -2; i >= m + 1; i--){
array[i][n - m -1] = num++;
}
}
if (n % 2 == 1){
array[n / 2][n / 2] = num++;
}
for (i = 0; i < n; i++){
for (j = 0; j < n; j++){
System.out.print(array[i][j]+"\t");
}
System.out.println();
}
}
}
螺旋矩阵Java版
最新推荐文章于 2024-03-31 16:08:24 发布