zoukankan      html  css  js  c++  java
  • Java编码 蛇形矩阵的构建与遍历输出

    一、蛇形矩阵的构建,并按行输出

    例:

    输入:n,

    生成n*n的蛇形矩阵

    1 2 3

    8 9 4

    7 6 5

    输出:1 2 3 8 9 4 7 6 5

    java编码

    public static void main(String[] args) {
            // TODO Auto-generated method stub
    
            Scanner in = new Scanner(System.in);
            int n = in.nextInt();
            if(n < 0)
                return;
            if(n == 1){
                System.out.println(1);
                return;
            }
                
            int[][] m = new int[n][n];
            //定义4个变量,分别记录当前行和列的上下限
            int i1 = 0, j1 = 0, i2 = n - 1, j2 = n - 1;
            int i = 0, j = 0;
            int begin = 1;
            //4个for循环,遍历蛇形矩阵
            while(i1 <= i2 && j1 <= j2){
    
                for(; j <= j2; ++j){//one row
                    m[i][j] = begin;
                    begin++;
                }
                j--;
                i++;
                i1++;
                
                
                for(; i <= i2; ++i){//one column
                    m[i][j] = begin;
                    begin++;
                }
                j2--;
                j--;
                i--;
    
                
                for(; j >= j1; --j){//one row
                    m[i][j] = begin;
                    begin++;
                }
                i2--;
                j++;
                i--;
    
                for(; i >= i1; --i){//one column
                    m[i][j] = begin;
                    begin++;
                }
                j1++;
                j++;
                i++;
            }
            
            //按行输出 蛇形矩阵
            for(i = 0; i < n; ++i)
                for(j = 0; j < n; ++j)
                    System.out.println(m[i][j] + " ");
        }

    二、已知蛇形矩阵m,顺时针顺序输出

    例:

    矩阵m

    1   2   3   4

    12 13 14  5

    11 16 15  6

    10 9   8   7

    输出:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

    public static void main(String[] args) {
            // TODO Auto-generated method stub
            
            int[][] m = {{1,2,3,4},{12,13,14,5},{11,16,15,6},{10,9,8,7}};
            int n = m.length;
            int c = m[0].length;
            if(n == 1){
                for(int a = 0; a < m[0].length; ++a)
                    System.out.print(m[0][a] + " ");
            }
            if(c == 1){
                for(int a = 0; a < m.length; ++a)
                    System.out.print(m[a][0] + " ");
            }
                
            //定义4个指针,记录行和列的上下限
            int i1 = 0, j1 = 0, i2 = n - 1,j2 = c - 1; 
            int i = 0, j = 0;
            while(i1 <= i2 && j1 <= j2){//one row
                for(; j <= j2; ++j)
                    System.out.print(m[i][j] + " ");
                i++;
                j--;
                i1++;
                for(; i <= i2; ++i)//one column
                    System.out.print(m[i][j] + " ");
                i--;
                j--;
                j2--;
                for(; j >= j1; --j)//one row
                    System.out.print(m[i][j] + " ");
                i--;
                j++;
                i2--;
                for(; i >= i1; --i)//one column
                    System.out.print(m[i][j] + " ");
                i++;
                j++;
                j1++;
            }
            
        }
  • 相关阅读:
    UITabBarController资料
    lintcode157 判断字符串是否没有重复字符
    设置TabBarItem选中时的图片及文字颜色
    扩展UIColor类
    设置UINavigationController相同标题
    iOS打开手机QQ与指定用户聊天界面
    UIWindow
    Google Test资料
    Xcode集成Google Test
    文章索引
  • 原文地址:https://www.cnblogs.com/mydesky2012/p/5831768.html
Copyright © 2011-2022 走看看