最近要换份工作或者在家休息一段时间,所以练练常用的面试算法题,说是原创也不完全是。不过确实是看了算法后,自己重新实现了一遍。
package com.liuliu.matrix;
public class ShunXu {
static int length = 5;
static int[][] snake = new int[length][length];
static int value = 1;
static enum Direction {
Right, Down, Left, Up;
}
public static void initialArray() {
int row = 0;
int line = 0;
Direction direction = Direction.Right;
for (int i = 0; i < length * length; i++) {
snake[row][line] = value;
direction = getDirection(row, line, direction);
switch (direction) {
case Right:
line++;
break;
case Down:
row++;
break;
case Left:
line--;
break;
case Up:
row--;
break;
}
value++;
}
}
public static Direction getDirection(int row, int line, Direction direction) {
Direction nextDirection = direction;
if (direction == Direction.Right) {
if (line == length - 1 || snake[row][line + 1] != 0)
nextDirection = Direction.Down;
} else if (direction == Direction.Down) {
if (row == length - 1 || snake[row + 1][line] != 0)
nextDirection = Direction.Left;
} else if (direction == Direction.Left) {
if (line == 0 || snake[row][line - 1] != 0)
nextDirection = Direction.Up;
} else if (direction == Direction.Up) {
if (snake[row - 1][line] != 0)
nextDirection = Direction.Right;
}
return nextDirection;
}
/**
* @param args
*/
public static void main(String[] args) {
initialArray();
// display.....
for (int i = 0; i < length; i++) {
for (int j = 0; j < length; j++) {
System.out.print(snake[i][j] + "\t");
}
System.out.println();
}
}
}
分享到:
相关推荐
用C语言编写回旋矩阵,可以产生任意阶的回旋矩阵,包括矩阵,以及图形的表示,直观
这是一个输出回旋矩阵的C语言程序,只要输入矩阵的大小然后按enter键就可以输出顺时针方向的回旋矩阵
今天小编就为大家分享一篇python实现回旋矩阵方式(旋转矩阵),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
求N阶回旋矩阵,在给定阶数的二维数组外构建搜索边界,使用试探法求解
一个C#的算法,实现数字的回旋排列,从大到小,顺时针排列,核心算法适用于其他语言
回旋算法 自己写的哦 绝对通俗易懂 C语言
Java技术教程.基础篇 Java技术教程.基础篇 Java技术教程.基础篇
回旋线、样条曲线、多项式螺旋线是使用较多的路径生成曲线.具有重要实用意义的两大类无人车运动规划算法分别是:以快速随机扩展树算法(RRT)为代表的基于采样的规划算法和以A*搜索算法为代表的基于搜索的规划算法. ...
│ └── RotationSort.php Facebook面试题之顺时针回旋算法 │ └── Square.php Facebook面试题之判断四个点能否组成正方形算法 │ └── Prim.php Prim算法(最小生成树算法) ...
大数据-算法-回旋行波放大器的相关理论研究与数值模拟.pdf
C语言中的回旋数还是蛮重要的,对于算法研究的人还是能起到一些作用的。
回旋速调管放大器的自洽非线性计算程序,用于计算回旋速调管高频系统电子注-波互作用
java java_leetcode面试题解哈希表第447题回旋镖的数量_题解
大数据-算法-同轴波导回旋自谐振脉塞放大器的线性与非线性研究.pdf
matlab三维回旋仿真,适合新手学习交流
游戏已经实现了激光武器,散射武器,回旋武器,以及僚机和敌机的设计,基本上功能齐全,后续功能的添加由于优质的代码设计而变得异常简单,最近打算继续研究Java3D,该游戏不打算继续维护,如果有需要的朋友或者想要...
foobar 回旋混音器
改进了对回合减少的SM3的回旋镖攻击和BLAKE-256的键控排列
回旋钻机安全操作规程.pdf