打印螺旋矩阵

/*    打印螺旋矩阵
*   所谓螺旋矩阵,即:
*    比如 N = 3,打印:
*    1 2 3
*    8 9 4
*    7 6 5
*
*    N = 4,打印:
*    1  2  3  4
*    12 13 14 5
*    11 16 15 6
*    10 9  8  7
*
*/

import java.util.*;

public class lianxi14{
    public static void main(String[] args){
        int N = 0;
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入矩阵大小N的值:");
        N = sc.nextInt();
        
        int[][] Matrix = new int[N][N];
        setMatrix(Matrix, 0, 0, 1, N);
        printMatrix(Matrix);    
    }
    
    /**************************************************************
    * 函数功能:螺旋矩阵赋值
    * 参数说明:int[][] A:二维矩阵        int x:矩阵中行坐标
    *            int y: 矩阵中列坐标        int start:初始值
    *            int n: 矩阵大小
    **************************************************************/
    static void setMatrix(int[][] A, int x, int y, int start, int n){
        int i = 0;
        if(n <= 0)
            return;
        if(n == 1){
            A[x][y] = start;
            return;
        }
        //up
        for(i = y; i < y + n - 1; i++)
            A[x][i] = start++;
        //right
        for(i = x; i < x + n - 1; i++)
            A[i][y+n-1] = start++;
        //down
        for(i = y + n - 1; i > y; i--)
            A[x+n-1][i] = start++;
        //left
        for(i = x + n - 1; i > x; i--)
            A[i][y] = start++;
        setMatrix(A, x+1, y+1, start, n-2);
    }
    
    /*
    *    函数功能:打印矩阵
    */
    static void printMatrix(int[][] A){
        int len = A.length;
        for(int i = 0; i < len; i++){
            for(int j = 0; j < len; j++){
                System.out.print(A[i][j]+"\t");
            }
            System.out.println("");
        }
    }
}

 

posted @ 2013-03-24 22:12  wannianma  阅读(284)  评论(0编辑  收藏  举报