Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA:如何创建蛇形矩阵_Java_Arrays_Matrix - Fatal编程技术网

JAVA:如何创建蛇形矩阵

JAVA:如何创建蛇形矩阵,java,arrays,matrix,Java,Arrays,Matrix,嗨,我正在尝试使用2D数组在控制台上创建一个矩阵。其思想是输出应如下所示: 1|8|9 |16 2|7|10|15 3|6|11|14 4|5|12|13 有人知道怎么做吗?只是一些psuedo代码,希望它能帮助你,给你一些开始的东西 boolean goUp = false; boolean goDown = true; size = 4; matrix[size][size]; k = 0; l =0; loop i->0 i < size*size i++ matri

嗨,我正在尝试使用2D数组在控制台上创建一个矩阵。其思想是输出应如下所示:

1|8|9 |16
2|7|10|15
3|6|11|14
4|5|12|13

有人知道怎么做吗?

只是一些psuedo代码,希望它能帮助你,给你一些开始的东西

boolean goUp = false;
boolean goDown = true;
size = 4;
matrix[size][size];
k = 0; 
l =0;

loop i->0 i < size*size i++
  matrix[l][k] = i;

  if(l==size and goDown)
    goDown = false;
    goUp = true;
    k++;
  else if(l==0 and goUp)
    goDown = true;
    goUp = false;
    k++;
  else
    l = l+ (1*goDown?1:-1);
end loop;
boolean goUp=false;
布尔仓库=真;
尺寸=4;
矩阵[大小][大小];
k=0;
l=0;
循环i->0 i<大小*大小i++
矩阵[l][k]=i;
if(l==尺寸和货仓)
货仓=假;
goUp=真;
k++;
else如果(l==0和goUp)
货仓=真实;
goUp=假;
k++;
其他的
l=l+(1个货仓-1:-1);
端环;

你可以从矩阵中猜出几件事:-

  • 首先,在移动到下一列之前,必须先遍历列的所有行

  • 其次,您需要在每次迭代中交替选择
    向下
    向上
    方向

  • 因此,您需要两个嵌套for循环,用于迭代特定列的行。一个将从
    行0转到max-1
    ,下一个将从
    行=max-1转到0

  • 现在,要改变迭代方向,可以使用一个布尔变量,并在每次内部循环迭代完成后切换它

  • 每个循环都需要封装在
    if-else
    中。它们都将在特定条件下执行。如果
    布尔向下=false,则将执行向上移动的循环,反之亦然

  • 在每次迭代中,用整数计数器填充当前单元格,必须使用
    1
    初始化该计数器,并在每次填充后递增


伪代码:-

    // Initialize variables row, col, and count = 1

    boolean goDown = true;

    int[][] matrix = new int[row][col];  // declare matrix

    for i = 0 to col:
        if (goDown)
            for j = 0 to row:  // Move in downwards direction
                assign count++ to matrix[j][i] 
                // assign to `[j][i]` because, we have to assign to rows first

            goDown = false;    // Toggle goDown

        else
            for j = row - 1 to 0:  // Move in upwards direction
                assign count++ to matrix[j][i] 

            goDown = true;  // toggle goDown

    }

最后,在您的帮助下,在仔细研究了多维数组是如何工作的之后,我解决了这个问题,现在我觉得这个问题相当简单

int a = 4;
    int b = 4;
    int c = 1;
    boolean direction = true;
    int[][] arrey = new int[a][b];
    for (int y = 0; y <= b - 1; y++) {
        if (direction) {
            for (int x = 0; x <= a - 1; x++) {
                arrey[x][y] = c;
                c++;
            }
            direction = false;
        } else {
            for (int x = a - 1; x >= 0; x--) {
                arrey[x][y] = c;
                c++;
            }
            direction = true;
        }
    }

    for (int x = 0; x <= a - 1; x++) {
        for (int y = 0; y <= b - 1; y++) {
            System.out.print("["+arrey[x][y]+"]");
        }
        System.out.println("");
    }
inta=4;
int b=4;
int c=1;
布尔方向=真;
int[][]arrey=新int[a][b];

for(int y=0;y标记是一个家庭作业,不要指望别人帮你解决它。你尝试了什么?你最后需要2个for循环。你尝试了什么?我想,可以用一个
for
循环和两个
if
statements@Tomas作业标记,但我们仍然需要知道尝试了什么。一点上下文也可能有帮助。您想在内存中创建矩阵,将其显示在某个位置?很好,您成功地将我的伪代码转换为真实代码。:)但理想情况下,您应该接受帮助您获得此解决方案的答案。但这也是你的选择。你可以随时发布自己问题的答案并接受它。因为接受帮助你的答案是对帖子的感谢。我说这些只是为了你的利益。并不是说我会因此而得到重复。但如果你继续这样做,在某个时候,你的答案将不再得到良好的回应。另外,请不要把我的评论视为冒犯。这并不是说你不应该回答你的问题并接受它。如果你的任何问题没有得到明确的回答,而你在某个地方得到了更好的答案,那么在这种情况下,你可以发布并接受它。这是公平的,我们也鼓励这样做。