矩阵,Z形矩阵,S形矩阵,回形矩阵的java实现,矩阵的形式很多(如图):
import java.util.Scanner;
public class ManyMat {
static int[][] a;
static int t = 1;
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("输入一个数(代表矩阵的规模):");
int n = Integer.valueOf(input.nextLine());
mat1(n);
mat2(n);
mat3(n);
mat4(n);
}
// 正常矩阵
public static void mat1(int n) {
a = new int[n][n];
t = 1;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
a[i][j] = t++;
}
}
System.out.println("\n\n正常矩阵");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
System.out.print(a[i][j] + "\t");
}
System.out.println();
}
}
// S形矩阵
public static void mat2(int n) {
a = new int[n][n];
t = 1;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (i % 2 == 0) {
a[i][j] = t++;
} else {
a[i][n - j - 1] = t++;
}
}
}
System.out.println("\n\nS形矩阵");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
System.out.print(a[i][j] + "\t");
}
System.out.println();
}
}
// 回形矩阵
public static void mat3(int n) {
System.out.println("\n\n回形矩阵:");
t = 1;
a = new int[n][n];
mat3_son(1, 0, 0, n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
System.out.print(a[i][j] + "\t");
}
System.out.println();
}
}
public static void mat3_son(int tag, int x, int y, int num) {
if (t > a.length * a.length) {
return;
}
if (tag == 1) {
for (int i = y; i < y + num; i++) {
a[x][i] = t++;
}
mat3_son(tag + 1, x + 1, y + num - 1, num - 1);
} else if (tag == 2) {
for (int i = x; i < x + num; i++) {
a[i][y] = t++;
}
mat3_son(tag + 1, x + num - 1, y - 1, num);
} else if (tag == 3) {
for (int i = y; i > y - num; i--) {
a[x][i] = t++;
}
mat3_son(tag + 1, x - 1, y - num + 1, num - 1);
} else if (tag == 4) {
for (int i = x; i > x - num; i--) {
a[i][y] = t++;
}
mat3_son(tag - 3, x - num + 1, y + 1, num);
}
}
// Z形矩阵
public static void mat4(int n) {
a = new int[n][n];
t = 1;
int i = 0;
int j = 0;
a[0][0] = t++;
for (; t <= n * n;) {
if (i < n && i - 1 >= 0 && j + 1 < n && a[i - 1][j + 1] == 0) {
a[i - 1][j + 1] = t++;
i -= 1;
j += 1;
} else if (i + 1 < n && j < n && j - 1 >= 0 && a[i + 1][j - 1] == 0) {
a[i + 1][j - 1] = t++;
i += 1;
j -= 1;
} else if (j == 0 && i + 1 < n) {
a[i + 1][j] = t++;
i += 1;
} else if (i == 0 && j + 1 < n) {
a[i][j + 1] = t++;
j += 1;
} else if (i == n - 1 && j + 1 < n) {
a[i][j + 1] = t++;
j += 1;
} else if (j == n - 1 && i + 1 < n) {
a[i + 1][j] = t++;
i += 1;
}
}
System.out.println("\n\n\nZ形矩阵:");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
System.out.print(a[i][j] + "\t");
}
System.out.println();
}
}
}