运行结果
引用
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
class SnakePrint {
static int length = 5;
static int value = 1;
static int[][] snake = new int[length][length];
static Direction lastDirection = Direction.Right;
static enum Direction {
Right, Down, Left, Up;
}
public static void initialArray() {
int row = 0, line = 0;
for (int c = 0; c < length * length; c++) {
snake[row][line] = value;
lastDirection = findDirection(row, line);
switch (lastDirection) {
case Right:
line++;
break;
case Down:
row++;
break;
case Left:
line--;
break;
case Up:
row--;
break;
default:
System.out.println("error");
}
value++;
}
}
static Direction findDirection(int row, int line) {
Direction direction = lastDirection;
switch (direction) {
case Right: {
if ((line == length - 1) || (snake[row][line + 1] != 0))
direction = direction.Down;
break;
}
case Down: {
if ((row == length - 1) || (snake[row + 1][line] != 0))
direction = direction.Left;
break;
}
case Left: {
if ((line == 0) || (snake[row][line - 1] != 0))
direction = direction.Up;
break;
}
case Up: {
if (snake[row - 1][line] != 0)
direction = direction.Right;
break;
}
}
return direction;
}
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] + " ");
}
System.out.println();
}
}
}
分享到:
相关推荐
这时,我们需要使用`cin`和`cout`来读取用户输入和打印输出,同时加入条件判断以确保程序的健壮性。 在提供的压缩包文件"环形矩阵"中,应该包含了具体的实现代码。通过阅读和理解这些代码,初学者不仅可以学习到...
Java 实现转圈打印矩阵算法 Java 实现转圈打印矩阵算法是指将一个整形矩阵按照顺时针方向转圈的方式,输入(打印)元素值。该算法的实现可以分为两个部分:矩阵的初始化和转圈打印。 矩阵的初始化 在 Java 中,...
该例程使用eclipse IDE,演示了UART串口环形缓冲区的C语言实现代码,并将printf函数重映射到UART串口实现调试信息的打印输出。环形缓冲区的实现思路参照该链接:https://www.cnblogs.com/zengzy/p/5139582.html。...
如果遇到问题,可以尝试打印变量或使用浏览器的开发者工具进行调试,以便更好地理解代码逻辑。 6. **实战应用** 实际开发中,可以根据需求动态生成数据并更新图表,例如响应用户操作改变数据,或者通过异步请求...
月球灯是一种模仿月球表面纹理的灯具,它们通常具有精细的环形山、陨石坑和独特的月球地貌,为室内空间增添科幻和浪漫的氛围。 STL(StereoLithography)文件格式是3D打印领域最常用的数据交换格式之一。它以三角...
- **打印机管理**:打印机的工作队列通常也是环形队列,文档按照到达的顺序排队等待打印。 - **数据流处理**:在实时数据分析中,环形队列可以用来存储一定时间窗口内的数据,以便进行滑动窗口计算。 在"Part03...
`get_front` 和 `get_rear` 分别返回前端和后端的元素,而 `display` 方法用于打印环形数组中的所有元素。`is_empty` 和 `is_full` 方法用来检查环形数组是否为空或已满。 环形数组的一个常见应用场景是循环队列,...
6. **遍历与打印**:由于环形队列的特殊性,遍历和打印队列元素不能简单地从队头到队尾,而需要考虑当前的队头和队尾位置,确保不遗漏或重复任何元素。 7. **拓展应用**:环形队列在很多实际场景中都有应用,如操作...
环形队列是一种高效的数据结构,它在计算机科学中被广泛应用,特别是在处理顺序存取的序列数据时。在C语言中实现环形队列,我们可以使用固定大小的数组来达到目的。这种数据结构允许我们在队列满时进行智能地替换旧...
为了展示环形缓冲区的实际应用,代码创建了两个线程,`thread_read`负责从缓冲区读取数据并打印,`thread_write`则不断向缓冲区写入"hello world"。这两个线程分别使用`pthread_mutex_lock`和`pthread_mutex_unlock`...
在循环中,我们打印当前节点的序号,并通过`$cur = $cur->next`移动指针。由于环形链表的特性,我们需要特别处理结束条件,即当`$cur->next`等于头节点时跳出循环。但是,此时`$cur`正好指向最后一个节点,所以我们...
"资料"一词通常用于指代教育、研究或专业用途的信息集合,而"文档"则提示我们这可能是一个PDF格式的文件,便于阅读和打印。 在"开口式半环形抗干扰电流传感器.pdf"这个文件中,我们可以期待找到以下内容: 1. **...
通常,kernel日志是通过内核自己的环形缓冲区管理的,并不直接与用户空间的日志系统集成。然而,通过替换`system/core/logcat`目录,我们可以实现将kernel日志整合进adb logcat的输出中,这样开发者无需额外的工具就...
这段代码定义了一个名为`PrintDemo`的窗口应用,包含两个按钮分别用于打印文本和图形,一个文本框用于输入环形数量,一个下拉列表用于选择不同的字体面相,以及一个预设的`Plot3`对象,用于尝试不同的图形打印效果。...
这一过程可能涉及到CNC机床、3D打印技术等。此外,考虑到环保和可持续性,设计者还需要考虑铅笔芯的生产过程中可能产生的废弃物处理和资源利用效率。 文件列表中提到的“一种三环形铅笔芯.pdf”很可能是一份详细的...
5. **制造工艺**:制作过程可能涉及不同的制造技术,如注塑成型、激光切割或3D打印,文档会详细说明每一步的工艺流程。 6. **使用维护**:为了保证产品寿命,设计文档通常会包含使用和维护的建议,比如清洁方法、...
在这种情况下,可以采用将数据发送到环形缓冲区或队列的方式,然后由另一个低优先级的后台任务或中断服务程序来处理发送任务。这样可以避免在发送数据时阻塞主程序的执行,从而保证系统的实时响应性。 综上所述,...
2. **环形渐变模型**:环形结构上具有不同角度的倾斜面,用于评估打印机的倾斜打印能力。如果打印质量不佳,可能会出现阶梯状或者扭曲的现象。 3. **球体和锥体模型**:球体和锥体模型测试的是打印机的圆润度和曲线...
`showHero`函数用于展示环形链表中所有人的编号,它遍历整个链表并打印每个节点的编号。`countChild`函数则是解决约瑟夫环问题的核心,它接受三个参数:链表的起始节点`$first`,开始报数的位置`$m`(即第几个人开始...
可连接WIFI并自动校时的极简主义环形LED时钟。本项目为"Round-Led-Clock"的改进版,主要改进和增加了以下功能:重构主程序及相关注释。解决原版程序运行一段时间就会死机的问题。NTP服务器改为了国内的服务器(阿里云...