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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了腾讯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 转变方向后数组下标的处理

以上是关于腾讯2016实习生编程题 打印蛇形二维数组的主要内容,如果未能解决你的问题,请参考以下文章

大数乘法——2016开发实习生腾讯模拟笔试编程题

腾讯2017暑期实习生编程题

腾讯2017暑期实习生编程题

腾讯2017暑期实习生编程题

腾讯2017暑期实习生编程题

腾讯2017年暑期实习生编程题有趣的数字Python