Java实现之字形图案算法

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的静态方法,用于打印之字形图案。该方法接受两个参数:rowscols,分别表示图案的行数和列数。

首先,我们创建一个二维数组pattern,用于存储之字形图案的数字。然后,我们使用两个变量ij来追踪当前位置。另外,我们使用一个布尔变量isGoingDown来表示当前的移动方向,初始值为true,表示向下移动。

接下来,我们使用一个循环从1到rows * cols,依次将数字填充到二维数组pattern中。在每次迭代中,我们根据当前的移动方向更新ij的值,并将当前数字存储在相应的位置。

对于向下移动的情况,我们检查当前位置是否在最后一行,如果是,则更新j的值并改变移动方向为向上。如果当前位置不在最后一行,我们先增加i的值,再减少j的值。

对于向上移动的情况,我们检查当前位置是否在最后一列,如果是,则增加i的值并改变移动方向为向下。如果当前位置不在最后一列,我们先减少i的值,再增加j的值。

最后,我们使用两个嵌套的循环遍历二维数组pattern,并打印每个位置上的数字。通过在每个数字后面添加制表符\t,我们可以保持图案的对齐。

main方法中,我们定义了行数rows和列数cols,并调用printZigZagPattern方法来打印之字形图案。

要打印不同大小的之字形图案,只需修改rowscols的值即可。

希望本文可以帮助你理解和实现Java中的之字形图案算法。如果你有任何问题,请随时提问!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值