码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-04-05 01:55:26      阅读:347      评论:0      收藏:0      [点我收藏+]

标签:

当时腾讯测评笔试的时候没有写出来,今天想想把这玩意给弄出来,想思路包括写程序大概用了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实习生编程题 打印蛇形二维数组

标签:

原文地址:http://www.cnblogs.com/winAlaugh/p/5353547.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!