【JAVA】腾讯研发类在线笔试题之蛇形矩阵实现
来源:互联网 发布:软件开发找对象 编辑:程序博客网 时间:2024/06/02 05:51
给定一个常数N,得到一个N*N的二维正方形矩阵,矩阵的排列规则犹如螺旋的蛇形。
例如给定常数4,得
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
例子:3
1 2 3
8 9 4
7 6 5
代码思想:
设定两个索引,i表示第i行,j表示第j列
1,右移,行i不变,列j自增,开始向右赋值,遍历到没有赋过值得最右端,转下移2;
2,下移,列j不变,行i自增,开始向下赋值,遍历到没有赋过值得最下端,转左移3;
3,左移,行i不变,列j自减,开始向左赋值,遍历到没有赋过值得最左端,转上移4;
4,上移,列j不变,行i自减,开始向上赋值,遍历到没有赋过值得最上端,转右移2;
当赋值到N*N的时候,即可得蛇形正方形矩阵。
代码如下:
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Snake {public static void main(String []args){BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String str = "";try{str = br.readLine();}catch(IOException e){e.printStackTrace();}int N= Integer.parseInt(str);int[][] arr = getSnakeArray(N);for (int i = 0; i < N; i++) {for (int j = 0; j < N; j++) {System.out.print(arr[i][j]+" ");}System.out.println();}}//蛇形矩阵public static int[][] getSnakeArray(int N){if(N<=0){return null;}boolean flagDown =false;boolean flagLeft = false;boolean flagTop =false;boolean flagRight =true;int sum = N*N;int j=0;int i=0;int [][]arr = new int[N][N];arr[0][0] = 1;for(int count=2;count<=sum;count ++){//1,右移,行i不变,列j自增,开始向右赋值,遍历到没有赋过值得最右端,转下移2;if(flagRight&&j+1<N&&arr[i][j+1]==0){j++;arr[i][j]=count;}else if(flagRight){flagDown=true;flagLeft = false;flagTop =false;flagRight =false;count--;continue;}//2,下移,列j不变,行i自增,开始向下赋值,遍历到没有赋过值得最下端,转左移3;if(flagDown&&i+1<N&&arr[i+1][j]==0){i++;arr[i][j]=count;}else if(flagDown){flagLeft=true;flagDown =false;flagTop =false;flagRight =false;count--;continue;}//3,左移,行i不变,列j自减,开始向左赋值,遍历到没有赋过值得最左端,转上移4;if(flagLeft&&j-1>=0&&arr[i][j-1]==0){j--;arr[i][j]=count;}else if(flagLeft){flagTop=true;flagDown =false;flagRight = false;flagLeft =false;count--;continue;}//4,上移,列j不变,行i自减,开始向上赋值,遍历到没有赋过值得最上端,转右移2;if(flagTop&&i-1>=0&&arr[i-1][j]==0){i--;arr[i][j]=count;}else if(flagTop){flagRight=true;flagDown =false;flagLeft = false;flagTop =false;count--;continue;}}return arr;}}
1 0
- 【JAVA】腾讯研发类在线笔试题之蛇形矩阵实现
- 腾讯笔试题,蛇形矩阵的Java实现
- [2016腾讯暑期实习在线笔试题][蛇形矩阵]
- 腾讯笔试题:蛇形矩阵
- 腾讯笔试 蛇形矩阵
- 【Java笔试题】蛇形矩阵
- 腾讯2016实习生笔试编程题 打印蛇形矩阵
- 蛇形矩阵Java实现
- 蛇形矩阵 java实现
- 蛇形矩阵 Java实现
- java实现蛇形矩阵
- 2016校招腾讯研发岗笔试题(第二题)用Java实现
- 腾讯2016软开实习生笔试题-编程1:蛇形矩阵
- 腾讯2016实习生笔试编程题 打印蛇形矩阵的递归做法
- 腾讯2016实习笔试:n阶蛇形矩阵
- 蛇形矩阵的java实现
- 蛇形矩阵的java实现
- 腾讯机试模拟题(蛇形矩阵)
- Making Change UVA, 166
- Point和PointF
- cmake 学习笔记(二)
- 【OkHttp3源代码分析】(一)Request的execute
- Cf 120 F 【vector+dfs】
- 【JAVA】腾讯研发类在线笔试题之蛇形矩阵实现
- html基础开发-- Jquery框架方法使用(攻略二)
- linux compile objective-c
- 多行文本输入学生信息并学号排序输出
- 从简单的选择排序入手,深刻理解程序
- DuiLib(5)——CWindowWnd窗口函数简介
- 三种简单排序
- 复制多行代码到shell
- 目标检测随笔1——目标检测简要综述