您的位置:首页 > 其它

有关回旋数组的程序

2011-11-28 19:30 232 查看
package suanfa;

import java.util.Scanner;

/**

* 回旋数组,仿照贪吃蛇的运动轨迹

* @author dell

*

*/

public class HuiHuan {

/**

* @param args

*/

public static void main(String[] args) {

HuiHuan hh = new HuiHuan();

int[][] b = hh.initArray();



for(int i=0;i<b.length;i++){

for(int j=0;j<b[i].length;j++){

System.out.print(b[i][j]+" ");

}



System.out.println();

}



}

enum Direction {

Up, Down, Left, Right

};

public int[][] initArray() {

Scanner s = new Scanner(System.in);

System.out.println("请输入一个小与10的数字:");

int n = s.nextInt();

int[][] array=new int[2*n-1][2*n-1];

Direction dir = Direction.Right;//初始化方向向右

int count = n+1;// 回旋次数

int rnumber = n;//向右的赋值给数数字

int unumber = n;//向上时的数字

int dnumber = n;//向下时的数字

int lnumber = n;//向左时的数字



int index = 1;

int maxRow = array.length;



int maxColums = array.length;

int minRow = 0;

int minColums = 0;

while (index < count) {

switch (dir) {

case Right:

for (int i = minColums; i < maxColums; i++) {

array[minColums][i] = rnumber;

}

rnumber--;

minRow++;

dir = Direction.Down;

break;

case Down:

for (int i = minRow; i < maxRow; i++) {

array[i][maxColums-1] = dnumber;

}

dnumber--;

maxColums--;

dir = Direction.Left;

break;

case Left:

for (int i = maxColums-1; i >= minColums; i--) {

System.out.println(i);

array[maxRow-1][i] = lnumber;

}

lnumber--;

maxRow--;

dir = Direction.Up;

break;

case Up:

for (int i = minColums; i < maxColums; i++) {

array[i][minColums] = unumber;

}

unumber--;

minColums++;

dir = Direction.Right;

index++;

break;

}



}



return array;

}

}



运行结果:

5 5 5 5 5 5 5 5 5

5 4 4 4 4 4 4 4 5

5 4 3 3 3 3 3 4 5

5 4 3 2 2 2 3 4 5

5 4 3 2 1 2 3 4 5

5 4 3 2 2 2 3 4 5

5 4 3 3 3 3 3 4 5

5 4 4 4 4 4 4 4 5

5 5 5 5 5 5 5 5 5
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: