您的位置:首页 > 编程语言 > Java开发

java蛇形矩阵输出方法(顺时针、逆时针)

2017-10-31 14:21 344 查看
package myTest.test;

public class TestMatrix {
/**
* 蛇形矩阵输出方法(顺时针、逆时针输出仅仅在开始的方向不同,顺时针向右,逆时针向下)
*
* @param N
* @param circleDir
* @return
*/
private static int[][] getMatrix(int N, CircleDir circleDir) {
Direct direct = Direct.RIGHT;// 默认向右,顺时针方向
if (circleDir == CircleDir.ANTICLOCKWISE) {// 逆时针方向,开始方向向下
direct = Direct.DOWN;
}

int[][] ints = new int

;
int result = 0;
int X = 0, Y = 0;
while (result < N * N) {//判断条件不能是<=
switch (direct) {
case RIGHT:
while (Y < N && ints[X][Y] == 0) {
result++;
ints[X][Y] = result;
Y++;
}
direct = Direct.DOWN;// 改变方向,向下
X++;//向下需要X坐标+1
Y--;//补偿Y坐标在上面循环体的偏移
break;
case DOWN:
while (X < N && ints[X][Y] == 0) {
result++;
ints[X][Y] = result;
X++;
}
direct = Direct.LEFT;// 改变方向,向左
Y--;//向左需要Y坐标-1
X--;//补偿X坐标在上面循环体的偏移
break;
case LEFT:
while (Y >= 0 && ints[X][Y] == 0) {
result++;
ints[X][Y] = result;
Y--;
}
direct = Direct.UP;// 改变方向,向上
X--;// 向上X坐标-1
Y++;// 补偿Y坐标在上面循环体的偏移
break;
case UP:
while (X >= 0 && ints[X][Y] == 0) {
result++;
ints[X][Y] = result;
X--;
}
direct = Direct.RIGHT;// 改变方向,向右
Y++;// 右转Y坐标+1
X++;// 补偿X坐标在上面循环体的偏移
break;
}
}
return ints;
}

//旋转方向
enum CircleDir {
CLOCKWISE, // 顺时针
ANTICLOCKWISE;// 逆时针
}

//移动方向
enum Direct {
UP, // 向上
DOWN, // 向下
LEFT, // 向左
RIGHT;// 向右
}

/**
* 测试方法
*
* @param args
*/
public static void main(String[] args) {
int N = 7;
System.out.println("=======================顺时针===================");
int[][] ints = getMatrix(N, CircleDir.CLOCKWISE);// 顺时针输出
for (int i = 0; i < N; i++) {// 遍历顺时针二维数组
for (int j = 0; j < N; j++) {
System.out.print(ints[i][j] + "	");
}
System.out.println();
}
System.out.println("=======================分割线===================");
System.out.println("=======================逆时针===================");
int[][] intAntis = getMatrix(N, CircleDir.ANTICLOCKWISE);// 逆时针输出
for (int i = 0; i < N; i++) {// 遍历逆时针二维数组
for (int j = 0; j < N; j++) {
System.out.print(intAntis[i][j] + "	");
}
System.out.println();
}
}
}

运行结果:

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