英文:
How would I print the Alphabet In a spiral starting from the bottom left corner?
问题
如果我想在矩阵中打印类似这样的内容:
G F E
H I D
A B C
我应该如何做?
我目前的代码如下:
A B C
H I D
G F E
我希望螺旋从矩阵的左下角开始,向左旋转。
以下是我目前用于处理数字的代码:
int n = sc.nextInt();
int[][] spiral = new int[n][n];
int value = 1;
int minCol = 0;
int maxCol = n-1;
int minRow = 0;
int maxRow = n-1;
while (value <= n*n)
{
for (int i = minCol; i <= maxCol; i++)
{
spiral[minRow][i] = value;
value++;
}
for (int i = minRow+1; i <= maxRow; i++)
{
spiral[i][maxCol] = value;
value++;
}
for (int i = maxCol-1; i >= minCol; i--)
{
spiral[maxRow][i] = value;
value++;
}
for (int i = maxRow-1; i >= minRow+1; i--)
{
spiral[i][minCol] = value;
value++;
}
minCol++;
minRow++;
maxCol--;
maxRow--;
}
for (int i = 0; i < spiral.length; i++)
{
for (int j = 0; j < spiral.length; j++)
{
System.out.print(spiral[i][j]+ "\t");
}
System.out.println();
}
英文:
If I wanted to print something like this in a matrix:
G F E
H I D
A B C
How would I do this?
The code I currently have goes like this:
A B C
H I D
G F E
I would like the spiral to start on the bottom left-hand corner of the matrix, and rotate to the left.
Here is my current code to do that with numbers:
int n = sc.nextInt();
int[][] spiral = new int[n][n];
int value = 1;
int minCol = 0;
int maxCol = n-1;
int minRow = 0;
int maxRow = n-1;
while (value <= n*n)
{
for (int i = minCol; i <= maxCol; i++)
{
spiral[minRow][i] = value;
value++;
}
for (int i = minRow+1; i <= maxRow; i++)
{
spiral[i][maxCol] = value;
value++;
}
for (int i = maxCol-1; i >= minCol; i--)
{
spiral[maxRow][i] = value;
value++;
}
for (int i = maxRow-1; i >= minRow+1; i--)
{
spiral[i][minCol] = value;
value++;
}
minCol++;
minRow++;
maxCol--;
maxRow--;
}
for (int i = 0; i < spiral.length; i++)
{
for (int j = 0; j < spiral.length; j++)
{
System.out.print(spiral[i][j]+ "\t");
}
System.out.println();
}
答案1
得分: 1
更改为
for (int i = spiral.length - 1; i >= 0; i--)
{
for (int j = 0; j < spiral.length; j++)
{
System.out.print(spiral[i][j]+ "\t");
}
System.out.println();
}
注意第一个 for 循环。它以相反的顺序打印行。
英文:
Change
for (int i = 0; i < spiral.length; i++)
{
for (int j = 0; j < spiral.length; j++)
{
System.out.print(spiral[i][j]+ "\t");
}
System.out.println();
}
to
for (int i = spiral.length - 1; i >= 0; i--)
{
for (int j = 0; j < spiral.length; j++)
{
System.out.print(spiral[i][j]+ "\t");
}
System.out.println();
}
Note the first for loop. It prints the lines in reverse order
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论