Java实现之字形图案算法
之字形图案是一种具有特殊排列方式的图案,它呈现出一种像"Z"字形的排列方式。在本文中,我们将使用Java编程语言实现之字形图案算法。下面是完整的源代码和详细的解释。
public class ZigZagPattern {
public static void printZigZagPattern(int rows, int cols) {
int[][] pattern = new int[rows][cols];
int i = 0, j = 0;
boolean isGoingDown = true;
for (int num = 1; num <= rows * cols; num++) {
pattern[i][j] = num;
if (isGoingDown) {
if (i == rows - 1) {
j++;
isGoingDown = false;
} else if (j == 0) {
i++;
isGoingDown = false;
} else {
i++;
j--;
}
} else {
if (j == cols - 1) {
i++;
isGoingDown = true;
} else if (i == 0) {
j++;
isGoingDown = true;
} else {
i--;
j++;
}
}
}
for (i = 0; i < rows; i++) {
for (j = 0; j < cols; j++) {
System.out.print(pattern[i][j] + "\t");
}
System.out.println();
}
}
public static void main(String[] args) {
int rows = 5;
int cols = 5;
printZigZagPattern(rows, cols);
}
}
在上述代码中,我们定义了一个名为ZigZagPattern
的类。该类包含一个名为printZigZagPattern
的静态方法,用于打印之字形图案。该方法接受两个参数:rows
和cols
,分别表示图案的行数和列数。
首先,我们创建一个二维数组pattern
,用于存储之字形图案的数字。然后,我们使用两个变量i
和j
来追踪当前位置。另外,我们使用一个布尔变量isGoingDown
来表示当前的移动方向,初始值为true
,表示向下移动。
接下来,我们使用一个循环从1到rows * cols
,依次将数字填充到二维数组pattern
中。在每次迭代中,我们根据当前的移动方向更新i
和j
的值,并将当前数字存储在相应的位置。
对于向下移动的情况,我们检查当前位置是否在最后一行,如果是,则更新j
的值并改变移动方向为向上。如果当前位置不在最后一行,我们先增加i
的值,再减少j
的值。
对于向上移动的情况,我们检查当前位置是否在最后一列,如果是,则增加i
的值并改变移动方向为向下。如果当前位置不在最后一列,我们先减少i
的值,再增加j
的值。
最后,我们使用两个嵌套的循环遍历二维数组pattern
,并打印每个位置上的数字。通过在每个数字后面添加制表符\t
,我们可以保持图案的对齐。
在main
方法中,我们定义了行数rows
和列数cols
,并调用printZigZagPattern
方法来打印之字形图案。
要打印不同大小的之字形图案,只需修改rows
和cols
的值即可。
希望本文可以帮助你理解和实现Java中的之字形图案算法。如果你有任何问题,请随时提问!