gpt4 book ai didi

java - 使用多维数组以不同的顺序打印值

转载 作者:行者123 更新时间:2023-11-30 03:34:48 24 4
gpt4 key购买 nike

我正在解决一个问题,我需要按以下格式打印 N*N 多维数组:如果 N = 3,则:

4 2 1
7 5 3
9 8 6

我一直在为此编写 for 循环。我无法获取逻辑或如何开始打印值。我的代码:

    import java.util.Scanner;


public class Hotel {

public static void main(String[] args) {
int N=1, x=1, y=0, f=1;
Scanner in = new Scanner(System.in);
System.out.println("Enter the size of square: ");
x = in.nextInt();
if (x>=1 && x<=100) {
N = x;
}
y=N*N;
int[][] arr = new int[N][N];

arr[0][N-1] = f;
arr[N-1][0] = y;
for(int i=0; i<N;i++) {
for (int j=0;j<N;j++) {
-------------------------------

}
}


for(int i=0; i<N;i++) {
for (int j=0;j<N;j++) {
System.out.print(arr[i][j] + " "); // Printing a 2d array
}
System.out.println(" ");
}

in.close();
}

}

根据我的代码我的输出:

0 0 1
0 0 0
9 0 0

内部 for 循环,我无法理解逻辑。如果你能帮我给出一个逻辑,我会尽力解决它。请帮忙

最佳答案

在解决此类问题时,您应该非常系统地思考您正在采取的步骤。基本上,您应该背诵您期望算法对自己采取的每一个步骤,而不进行任何“推理”。

您不应该做的步骤如下:

“好吧,我把 2 放在中上位置,所以现在我需要向右斜下方走。”

你需要找到你想做的事情的模式。在这种情况下,您想要制作数字对角线,因此您需要检测何时开始新的一行。你什么时候应该开始新的一行?好吧,当然,一旦当前的完成了。一条线什么时候结束?当 (x + 1, y + 1) 处没有合法位置时,您当前的位置为 (x, y)。

所以你的算法应该检测到这种情况,然后找到下一行的起始位置。你的下一行从哪里开始?如果您只存储上一行的起点坐标,那么它应该比那些少 1。

您现在知道从哪里开始和结束您的行,所以现在您需要做的就是初始化和终止您的算法。

右上角位置将始终保留 1,因此您可以立即将其放入。您有一个额外的变量存储 x 坐标,因此您需要将其设置为第一“行”的值,即 N-1。现在,上述算法将发现该行无法继续,并开始下一行。

你的算法什么时候终止?有多种方法可以执行此操作,但最简单的方法是查看接下来要输入的数字。你的方格是 N*N,所以这应该是输入的最大数字。如果您发现您要输入的下一个数字是 N*N + 1,那么您就完成了。或者,您可以检查您的“起始 x”,如果它小于 0,您将无法写入更多值。

关于java - 使用多维数组以不同的顺序打印值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28251920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com