作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我编写的代码,用于抛出螺旋矩阵,但它用于抛出矩阵不同
2000021
1970022
1860123
1714131224
1600025
代码是:
public class caracol {
public static void main(String[] args) {
int[][] matriz = new int[5][5];
int n=5;
int nlimite= n-1;
int inicio = 0;
int c=1;
while(c<=(n*n)) {
for (int i = inicio+2; i<=nlimite-1; i++) //baja
{
matriz[i][nlimite-1] = c++;
}
for (int i = inicio+2; i>=inicio+1; i--) ///izquierda
{
matriz[nlimite-1][i] = c++;
}
for (int i = nlimite-1; i>=inicio+1; i--) //sube
{
matriz[i][inicio+1] = c++;
}
for (int i = inicio+1; i>=nlimite-1; i++) //derecha
{
matriz[inicio+1][i] = c++;
}
for (int i = inicio+1; i<=nlimite; i++) //baja
{
matriz[i][nlimite] = c++;
}
for (int i = nlimite-1; i>=inicio; i--) ///izquierda
{
matriz[nlimite-1][i] = c++;
}
for (int i = nlimite; i>=inicio; i--) //sube
{
matriz[i][inicio] = c++;
}
for (int i = inicio; i>=nlimite; i++) //derecha
{
matriz[inicio][i] = c++;
}
for (int i = inicio; i<=nlimite; i++) //baja
{
matriz[i][nlimite] = c++;
}
nlimite=nlimite-1;
inicio = inicio+1;
}
for(int x=0;x<n;x++) { /*Mostrar la matriz en pantalla*/
System.out.println();
for(int y=0;y<n;y++) {
System.out.print(matriz[x][y]);
}
}
}
}
生成的矩阵与照片的矩阵不同。您必须从矩阵 [2] [2] 开始,但当您更改行和列索引的位置时,它会在矩阵 [0] [0] 中开始。
最佳答案
尝试这样的事情:
public class Matrix
{
// holds the matrix
private int[][] matrix = new int[ 5 ][ 5 ];
// fills up the matrix with zeroes
public void init()
{
for ( int i = 0; i < 5; ++i )
Arrays.fill( matrix[i], 0 );
}
// prints the matrix out
public void print()
{
for ( int i = 0; i < 5; ++i )
{
for ( int j = 0; j < 5; ++j )
System.out.printf( "%3d", matrix[i][j] );
System.out.println();
}
}
// prints text out according to the matrix
public void print(String text)
{
for ( int i = 0; i < 5; ++i )
{
for ( int j = 0; j < 5; ++j )
System.out.print( text.charAt(matrix[i][j]) );
System.out.println();
}
}
// fills the matrix with the spiral
public void generate()
{
// variables: co-ordinates, value, direction
int x = 2, y = 2, val = 0, dir = 0;
// in a 5×5 matrix we should put in 25 values...
while ( val < 25 )
{
// put this value
matrix[y][x] = ++val;
// for debugging
System.out.printf( "val=%d, x=%d, y=%d, dir=%d%n", val, x, y, dir );
// calculate next value's position, and check if we must turn
int turn = -1;
switch ( dir )
{
case 0: // down, checking left
++y;
if ( 25 != val ) // the last value would cause error
turn = matrix[y][x - 1];
break;
case 1: // left, checking up
--x;
turn = matrix[y - 1][x];
break;
case 2: // up, checking right
--y;
turn = matrix[y][x + 1];
break;
case 3: // right, checking down
++x;
turn = matrix[y + 1][x];
}
// next direction
if ( 0 == turn )
dir = ( dir + 1 ) & 3;
}
}
// for testing
public static void main( String[] args )
{
final Matrix m = new Matrix();
m.init();
m.generate();
m.print();
m.print("HelloWorldTodayIsAGoodDay");
}
}
将输出:
val=1, x=2, y=2, dir=0
val=2, x=2, y=3, dir=1
val=3, x=1, y=3, dir=2
val=4, x=1, y=2, dir=2
val=5, x=1, y=1, dir=3
val=6, x=2, y=1, dir=3
val=7, x=3, y=1, dir=0
val=8, x=3, y=2, dir=0
val=9, x=3, y=3, dir=0
val=10, x=3, y=4, dir=1
val=11, x=2, y=4, dir=1
val=12, x=1, y=4, dir=1
val=13, x=0, y=4, dir=2
val=14, x=0, y=3, dir=2
val=15, x=0, y=2, dir=2
val=16, x=0, y=1, dir=2
val=17, x=0, y=0, dir=3
val=18, x=1, y=0, dir=3
val=19, x=2, y=0, dir=3
val=20, x=3, y=0, dir=3
val=21, x=4, y=0, dir=0
val=22, x=4, y=1, dir=0
val=23, x=4, y=2, dir=0
val=24, x=4, y=3, dir=0
val=25, x=4, y=4, dir=0
17 18 19 20 21
16 5 6 7 22
15 4 1 8 23
14 3 2 9 24
13 12 11 10 25
sAGoo
IoWod
ylHrD
alela
doTdy
编辑:根据 Me Myself
请求添加文本
关于java螺旋矩阵不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46126725/
我正在尝试创建一个结构,如下面的屏幕截图所示。有没有办法在 JavaScript 中为此构建一个算法,以按时间顺序获取每个红点的 X 和 Y 坐标,以根据特定数量生成无限螺旋? Screenshot
我在 C++ 中有如下代码: for(int x = position.x; x GetValue(tc); } } 它的作用是生成一个梯度噪声值容器。在这样做的同时,它还会使结果围绕震中螺旋
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
我是一名优秀的程序员,十分优秀!