最近要换份工作或者在家休息一段时间,所以练练常用的面试算法题,说是原创也不完全是。不过确实是看了算法后,自己重新实现了一遍。
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#中的回旋矩阵实现 #### 知识点概览 本文将详细介绍如何在C#中实现一种特殊的矩阵——回旋矩阵。回旋矩阵是一种按照特定规则填充数字的二维数组,其特点是数字从中心向外扩展,且按照顺时针方向进行填充。此...
回旋矩阵,也被称为螺旋矩阵或旋转矩阵,是一种特殊的矩阵排列方式。在回旋矩阵中,元素会按照顺时针或者逆时针方向螺旋式地填充。这种矩阵在某些算法和数据结构问题中有着广泛的应用,例如在图像处理、数组遍历等...
在Python中,实现回旋矩阵(也称为螺旋矩阵或旋转矩阵)是一个有趣且具有挑战性的任务。通过构建一个按螺旋顺序填充数字的矩阵,可以加深对数组操作和循环控制的理解。本文将详细探讨如何使用Python结合numpy库来...
求N阶回旋矩阵,在给定阶数的二维数组外构建搜索边界,使用试探法求解
回旋算法,也被称为旋转排序(Rotating Sort),是一种基于比较的排序算法,它通过将数组分为已排序和未排序两部分,然后逐步将未排序的部分旋转到已排序的前面来实现整体排序。这个过程就像旋转一个部分的数组,...
Java技术教程.基础篇主要涵盖了Java编程语言的基本概念、语法和核心特性,是学习Java编程的入门指南。这篇教程旨在帮助初学者理解并掌握Java语言的基础知识,为更深入的Java开发打下坚实的基础。 首先,Java语言...
在C语言中,理解并掌握回旋数的概念和实现方式是提升算法分析和编程技能的重要环节。本文将深入探讨回旋数的基本概念、性质以及如何使用C语言进行编程实现。 ### 回旋数基本概念 回旋数是一种数字布局,它将数字...
5. **优化迭代**:可能包括参数优化算法,以寻找最佳设计条件。 要充分利用这个Matlab程序,首先需要了解其输入参数的含义和如何设定,接着运行代码观察输出结果。可能需要调整参数来研究不同条件下的回旋管性能。...
为了深入理解这篇关于“基于多目标遗传算法的回旋行波放大器分布式损耗参数优化”的文献内容,我们将首先对标题中提到的关键概念进行解读。随后,将基于描述、标签以及部分内容,详细阐述文章中提到的关键知识点,...
在Matlab中进行三维回旋仿真是一个非常实用的技术,尤其对于物理、工程以及计算机图形学等领域的研究者和学生来说。本项目旨在为新手提供一个学习和交流的基础平台,帮助他们理解如何利用Matlab来模拟物体在三维空间...
回旋线、样条曲线、多项式螺旋线是使用较多的路径生成曲线.具有重要实用意义的两大类无人车运动规划算法分别是:以快速随机扩展树算法(RRT)为代表的基于采样的规划算法和以A*搜索算法为代表的基于搜索的规划算法. ...
在Java中,使用HashMap实现上述逻辑可以提高算法的效率。LeetCode题解中的代码会展示具体的实现细节,包括如何巧妙地使用哈希表和如何优化搜索过程以减少不必要的计算。 通过理解和掌握这个哈希表的解决方案,不仅...
│ └── RotationSort.php Facebook面试题之顺时针回旋算法 │ └── Square.php Facebook面试题之判断四个点能否组成正方形算法 │ └── Prim.php Prim算法(最小生成树算法) ...
回旋数,也被称为螺旋数或旋转数,是一种在矩阵中按照特定顺序排列的数字模式。在C#编程中,创建一个控制台程序来展示回旋数矩阵是一种很好的练习,可以提升对数组和循环控制的理解。这个程序的核心是通过嵌套的for...
【回旋镖及其机械动力】主要探讨的是机械动力学中的一种特殊现象——回旋镖的飞行原理。回旋镖,又称飞去来器,是一种源自澳大利亚原住民的传统工具,因其独特的飞行特性,即在投掷后能返回到投掷者手中,而备受关注...
通过采用回旋线-圆曲线-回旋线的处理方式,避免了门形路径中直角两条边的突变,从而减小了机器人末端加速度波动,提高了运动平稳性。 首先,本文回顾了机器人运动轨迹规划的重要性,讨论了机器人运动轨迹规划的目标...
### JAVA G型结构知识点解析 #### 一、G型回旋结构概述 G型回旋结构是一种特定的数据填充模式,其基本思想是在一个二维数组中按照特定规则填充...这对于学习Java语言以及相关的数据结构和算法都具有重要的参考意义。
游戏已经实现了激光武器,散射武器,回旋武器,以及僚机和敌机的设计,基本上功能齐全,后续功能的添加由于优质的代码设计而变得异常简单,最近打算继续研究Java3D,该游戏不打算继续维护,如果有需要的朋友或者想要...