package offer;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
/**
* 顺时针打印矩阵
*
* @author zhaoz
*
*/
public class _29_PrintMatrixClockWisely {
static ArrayList<Integer> list = new ArrayList<Integer>();
public static ArrayList<Integer> printMatrix(int [][] matrix) {
int rows = matrix.length;
int columns = matrix[0].length;
int start = 0;
while(rows > start*2 && columns > start*2){
printMatrixInCircle(matrix, rows, columns, start);
start++;
}
return list;
}
public static void printMatrixInCircle(int [][] matrix, int rows, int columns, int start){
for(int i = start; i < columns - start; i++)
list.add(matrix[start][i]);
for(int j = start + 1; j < rows - start; j++)
list.add(matrix[j][columns - start - 1]);
for(int m = columns - start - 2; m >= start && rows - start - 1 > start; m--)
list.add(matrix[rows - start - 1][m]);
for(int n = rows - start - 2; n >= start + 1 && columns - start - 1 > start; n--)
list.add(matrix[n][start]);
}
/*
public static void setMatrix(int n) { // 顺时针旋转打印方阵
int[][] a = new int[n][n];
int count = 1;
int i, j;
for (i = 0; i < n; i++) { // 初始化矩阵元素为0
for (j = 0; j < n; j++)
a[i][j] = 0;
}
for (i = 0; i < n / 2; i++) { // 只旋转n/2次
for (j = i; j < n - i; j++) { // 向右
if (a[i][j] == 0)
a[i][j] = count++;
}
for (j = i; j < n - i; j++) {// 向下
if (a[j][n - i - 1] == 0)
a[j][n - i - 1] = count++;
}
for (j = n - i - 1; j > i; j--) {// 向左
if (a[n - i - 1][j] == 0)
a[n - i - 1][j] = count++;
}
for (j = n - i - 1; j > i; j--) { // 向上
if (a[j][i] == 0)
a[j][i] = count++;
}
}
if (n % 2 == 1) // 当n为奇数时,有个正中心点
a[n / 2][n / 2] = count;
for (i = 0; i < n; i++) { // 输出矩阵
for (j = 0; j < n; j++) {
System.out.print(a[i][j] + "\t");
}
System.out.println();
}
}
*/
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入n的值:");
int n = input.nextInt();
int m =input.nextInt();
int[][] a = new int[n][m];
for (int i = 0; i < n; i++) { // 输出矩阵
for (int j = 0; j < m; j++)
a[i][j] = input.nextInt();
}
printMatrix(a);
}
}