• 腾讯2016实习生编程题 打印蛇形二维数组


    当时腾讯测评笔试的时候没有写出来,今天想想把这玩意给弄出来,想思路包括写程序大概用了20分钟,接着调试程序用了接近30分钟

    根据这些情况,恩,给自己打75分。  调试过程中出现的异常主要是数组下标越界  就是循环过程,在边界条件下,中数组下标没有处理好

    下面是我的code

    package test1;
    /*
     * 输入一个整数 输出一个矩阵
     * 例子 整数等于3
     * 矩阵为    1 2 3
     *          8 9 4
     *          7 6 5
    *输出为 1 2 3 8 9 4 7 6 5 * 思路:首先确定有多少圈 就有多少个循环 * 定义circle 记录圈数 * 定义count记录每次移动的递增数 从1 到N*N * 每个循环中根据arr二维数组的横纵坐标 使得顺时针旋转,每移动一次,count++
    */ public class SnakeMatrix { public static void main(String[] args) { SnakeMatrix.matrix(4); } public static void matrix(int num){ if(num<=0) return; int circle = 0; if(num%2==0) circle=num>>1; else circle=(num>>1)+1; int col,row; int arr[][] = new int[num][num]; int count=1; for(int i=0;i<circle;i++){ row=i; col=i; while(col<num-i){ arr[row][col++]=count++; } col--; row++; while(row<num-i){ arr[row++][col]=count++; } row--; col--; while(col>=i){ arr[row][col--]=count++; } col++; row--; while(row>i){ arr[row--][col]=count++; } } for(int i=0;i<num;i++){ for(int j=0;j<num;j++){ System.out.print(arr[i][j]+" "); } } } }

    个人感觉代码的亮点有

    1 如何实现顺时针循环遍历,到了每个角上如何转变方向

    2 转变方向后数组下标的处理

  • 相关阅读:
    记录一次nginx的upstream的配置信息
    nginx-1.12.1编译参数详情
    nginx安装ngx_lua_waf防护
    MYSQL增加tmp_table_size 的操作
    windows安装zabbix监控
    mysql 授权
    python基础知识-集合,列表,元组间的相互装换
    python基础知识笔记-集合
    Python基础笔记-元祖
    python基础知识-列表的排序问题
  • 原文地址:https://www.cnblogs.com/winAlaugh/p/5353547.html
Copyright © 2020-2023  润新知