回形数组怎么编程

时间:2025-01-22 22:47:00 游戏攻略

回形数组的编程可以通过多种方法实现,以下是几种常见的编程思路:

方法一:顺时针螺旋填充

创建数组:

根据输入的数 \( n \) 创建 \( n \times n \) 的二维数组。

填充数组:

按照顺时针螺旋的顺序填充数组,从 \( (0,0) \) 位置开始,依次填充到 \( (n-1,n-1) \) 位置。

循环条件及终止条件:

使用两个指针 \( i \) 和 \( j \),分别表示当前填充的行和列。每次填充完一个方向后,更新指针位置,并检查是否到达边界或已填充过。

```java

import java.util.Scanner;

public class RoundMatrix {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

System.out.println("请输入一个数字:");

int num = scanner.nextInt();

int[][] matrix = new int[num][num];

int numElements = num * num;

int row = 0, col = 0;

int direction = 1; // 1: right, 2: down, 3: left, 4: up

for (int i = 0; i < numElements; i++) {

matrix[row][col] = i + 1;

int nextRow = row + direction;

int nextCol = col + (direction == 1 ? 1 : 0);

if (nextRow < 0 || nextRow >= num || nextCol < 0 || nextCol >= num || matrix[nextRow][nextCol] != 0) {

direction = (direction + 1) % 4; // change direction

nextRow = row + direction;

nextCol = col + (direction == 1 ? 1 : 0);

}

row = nextRow;

col = nextCol;

}

// Print the matrix

for (int i = 0; i < num; i++) {

for (int j = 0; j < num; j++) {

System.out.print(matrix[i][j] + " ");

}

System.out.println();

}

}

}

```

方法二:递归填充

创建数组:

同样根据输入的数 \( n \) 创建 \( n \times n \) 的二维数组。

递归填充:

从 \( (0,0) \) 位置开始,递归地填充数组,每次填充一个方向,直到填充完所有元素。

```java

import java.util.Scanner;

public class RoundMatrix {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

System.out.println("请输入一个数字:");

int num = scanner.nextInt();

int[][] matrix = new int[num][num];

fillMatrix(matrix, 0, 0, num);

// Print the matrix

for (int i = 0; i < num; i++) {

for (int j = 0; j < num; j++) {

System.out.print(matrix[i][j] + " ");

}

System.out.println();

}

}

public static void fillMatrix(int[][] matrix, int row, int col, int n) {

if (row < 0 || row >= n || col < 0 || col >= n || matrix[row][col] != 0) {

return;

}

matrix[row][col] = (row * n + col) + 1;

fillMatrix(matrix, row + 1, col, n); // down

fillMatrix(matrix, row - 1, col, n); // up

fillMatrix(matrix, row, col + 1, n); // right

fillMatrix(matrix, row, col - 1, n); // left

}

}

```

方法三:循环赋值

创建数组:

根据输入的数 \( n \) 创建 \( n \times n \) 的二维数组。

循环赋值:

使用一个循环,从外向内逐步缩小回形区域,并赋值。