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

标签 java arrays multidimensional-array

我正在解决一个问题,我需要按以下格式打印 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/

相关文章:

java - 自动将文件上传到 Azure WebJob 的快速而简洁的方法

java - 如何获取二维数组中的单词和行列表?

javascript - 对象成本===对象

python - 用户输入中使用了数组 A 和数组 B 中的多少个单词?

c - 如何在一个函数中动态分配二维数组并在另一个函数中打印它?

python - 将带有 Numpy Nd-Array 值的 python 字典写入 Json 文件的有效方法

java - v 变量已初始化

Java:解析 RSS 提要时出错

java - NoClassDefFound错误: org/apache/lucene/analysis/util/CharArraySet

javascript - 2D Javascript 数组类型错误