Java蛇形数组的简单实现代码

上周五和朋友聊天谈到个蛇形数组的java实现办法,命题是:假设一个二维数组宽w高h,从1开始蛇形输出。

int[][] numberMatric = new int[w][h];

当时午睡过头脑袋不清醒,愣是没有好的思路。后来晚上研究了下,发现一种比较简单的实现办法。核心思路是:

找准移动方向,按移动顺序递增填充二维数组。

比较简单的实现办法如下:

    private void snakeMatric(int w, int h){
        int x,y;//x,y坐标。
        int[][] numberMatric = new int[w][h];
        int num = numberMatric[x = 0][y = 0] = 1;
        while(num < w*h){
            //往右移动
            while(y+1 < w && numberMatric[x][y+1] == 0/*数组的项未填充时,其默认值为0*/){
                y++;
                numberMatric[x][y] = ++num;
            }
            //往下移动
            while(x+1<h && numberMatric[x+1][y] == 0){
                x++;
                numberMatric[x][y] = ++num;
            }
            //往左移动
            while(y-1>=0 && numberMatric[x][y-1] == 0){
                y--;
                numberMatric[x][y] = ++num;
            }
            //往上移动
            while(x-1>=0 && numberMatric[x-1][y] == 0){
                x--;
                numberMatric[x][y] = ++num;
            }
        }
        //打印输出
        for(x = 0;x < w;x++){
            for(y = 0;y < h;y++){
                System.out.printf("%4d",numberMatric[x][y]);
            }
            System.out.println();//换行
        }
    }
时间: 2024-10-06 21:53:27

Java蛇形数组的简单实现代码的相关文章

java用数组实现简单的学生管理系统

用数组存放对象,然后遍历数组,加上一些数组的操作,很简单,纯属记录 import java.util.Scanner; public class StudentManagerTwice {    public static void main(String[] args) {        Student1 stu = new Student1("aaa",12,1201);        Student1 stu2 = new Student1("bbb",34,

简谈Java中数组的简单应用--------------------之思路拓展

已知一个数组,下面我们做三件事 1.打印一个数组所有元素 2.求这些数值的和 3.问一个数是3440在这个数组里存在吗? 1 package cn.happy; 2 3 public class Day03 { 4 public static void main(String[] args) { 5 //Ctrl+F:快速查找和替换 6 int[] nums={8,4,2,1,23,344,12}; 7 //1.只管打印 8 for (int i = 0; i < nums.length; i+

Java数据结构和算法之数组与简单排序

一.数组于简单排序 数组 数组(array)是相同类型变量的集合,可以使用共同的名字引用它.数组可被定义为任何类型,可以是一维或多维.数组中的一个特别要素是通过下标来访问它.数组提供了一种将有联系的信息分组的便利方法. 一维数组 一维数组(one‐dimensional array )实质上是相同类型变量列表.要创建一个数组,你必须首先定义数组变量所需的类型.通用的一维数组的声明格式是: type var‐name[ ]; 获得一个数组需要2步: 第一步,你必须定义变量所需的类型. 第二步,你必

Java连接MySQL数据库及简单操作代码

1.Java连接MySQL数据库 Java连接MySql需要下载JDBC驱动MySQL-connector-java-5.0.5.zip(举例,现有新版本).然后将其解压缩到任一目录.我是解压到D盘,然后将其目录下的MySQL-connector-java-5.0.5-bin.jar加到classpath里,具体如下: "我的电脑"-> "属性" -> "高级" -> "环境变量",在系统变量那里编辑clas

Java简单实用代码分享,这里一定有你想要的!

Java简单实用代码分享,这里一定有你想要的! 今天开始给大家分享一些简单实用的代码,之前的小项目文章因为篇幅有限,没办法一篇文章说清楚,便想着分享一些小代码.都是完整有效的,可直接取用. 电脑密码制作 #include <stdio.h> void InputPass(char pw[])//获取用户输入的密码 { char ch;//用户输入的密码字符 char* pold = pw;//保存密码数组的首地址,用于循环内的比较 while((ch=getch())!='\r')//ASCI

java:Spring框架1(基本配置,简单基础代码实现)

1.基本配置: 步骤一:新建项目并添加spring依赖的jar文件和commons-logging.xx.jar: 步骤二:编写实体类,DAO及其实现类,Service及其实现类; 步骤三:在src下新建配置文件applicationContext.xml,并配置bean节点和property: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springfr

[java初探05]__数组的简单认识及Arrays类的常用方法

数组是具有相同数据类型的一组数据的集合.在程序设计中,这样的集合称之为数组.数组的每个元素都具有相同的数据类型,在Java中数组也被看为一个对象. 在里,了解了数组的定义之后, 我们知道了,数组并不是简单的由一组数组成的.而是由一组具有相同数据类型的数据组成的,可以是一组整型的数据,也可以是一组字符型的数组,这里的数可以来理解为代表的是数据,而不是数字的意思. 关于一维数组与二维数组 一维数组实际上就是一组相同数据类型的数据的线性集合. 如果一维数组中的每一个元素任然是一个数组的话,那么它就构成

java数据结构 - 数组使用的代码

在研发过程中,将开发过程比较好的内容珍藏起来,下面内容段是关于java数据结构 - 数组使用的内容,希望能对大伙有较大用. public class Array { private int[]Array; private int ArraySize; private int ArrayLength; private void GetArray(){ Array = new int[ArraySize]; if(Array == null) System.out.println("Memory A

foreach ()语法结构提供了遍历数组的简单方式

foreach 语法结构提供了遍历数组的简单方式.foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息.有两种语法: foreach (array_expression as $value) statement foreach (array_expression as $key => $value) statement 第一种格式遍历给定的 array_expression 数组.每次循环中,当前单元的值被赋给 $value 并且数组内部的指