蛇形矩陣求解

 蛇形矩陣求解





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


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