蛇形矩阵求解

 蛇形矩阵求解





Java代码:


 

public class SnakeMatrix {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

        snakeMatrix(2,4);

        snakeMatrix(4,4);

        snakeMatrix(10,1);

        snakeMatrix(1,10);

    }

//    将矩阵当作是一条条从右上到左下或者从左下到右上的对角线,

//    根据对角线越界判断是否填充,依次按对角线方向填充数值。

//    例如 4 x 4蛇形矩阵

//    1   3- 4   10

//    | /  /   /  |

//    2  5   9   11

//      /  /   /

//    6  8   12   15

//    | /  /    / |

//    7  13 - 14  16

   

    public static void snakeMatrix(int m,int n){

        if(m<=0||n<=0)

            return;

        int[][] array=newint[m][n];

        int c=0;

        int size=m+n;//对角线总的数目,大于最长对角线填充个数,保证边界判断后可以完全填充

        for(int i=0;i<size;i++){

            int mm,nn;

            if(i%2==0){

//              偶数为右上到左下方向填充对角线

//              起始点为横座标点

                mm=0;

                nn=i;

                for(int j=0;j<size;j++){

//                    边界判断

                    if(mm>=0&&mm<m&&nn>=0&&nn<n)

                        array[mm][nn]=++c;

//                    右上到左下方向

                    mm++;

                    nn--;

                }

            }else{

//              奇数为左下到右上方向填充对角线

//              起始点为纵座标点

                mm=i;

                nn=0;

                for(int j=0;j<size;j++){

                    if(mm>=0&&mm<m&&nn>=0&&nn<n)

                        array[mm][nn]=++c;

//                    左下到右上

                    mm--;

                    nn++;

                }

            }

        }

//        输出

        System.out.println("************************");

        System.out.println("SnakeMatrix:\t"+m+" x "+n);

        for(int i=0;i<m;i++){

            for(int j=0;j<n;j++)

                System.out.print(array[i][j]+" ");

            System.out.println();

        }

        System.out.println("************************");

    }

}

 

下载地址:

http://download.csdn.net/detail/ssuchange/6720721


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章