n阶魔方怎么编程

时间:2025-01-25 05:32:21 网络游戏

生成n阶魔方(也称为魔方阵)的步骤如下:

初始化:

创建一个n*n的二维数组,并将所有元素初始化为0。

放置初始数字:

将数字1放置在第一行的中间位置。

填充后续数字:

按照特定的规则填充后续数字,确保每行、每列以及对角线上的数字之和相等。

Java

```java

package chuanshu;

import java.util.Scanner;

public class mofang {

public static void nmofang(int n) {

int[][] a = new int[n][n];

int i = 0, j = n / 2;

for (int k = 1; k <= n * n; k++) {

a[i][j] = k;

if (k % n == 0) {

i = (i + 1) % n;

} else {

i = (i - 1 + n) % n;

j = (j + 1) % n;

}

}

for (i = 0; i < n; i++) {

for (j = 0; j < n; j++) {

System.out.print(a[i][j] + "\t");

}

System.out.println();

}

}

public static void main(String[] args) {

System.out.println("请输入要生成的魔方阶数:");

Scanner scanner = new Scanner(System.in);

int n = scanner.nextInt();

nmofang(n);

}

}

```

Python

```python

def print_magic_square(n):

magic_square = [ * n for _ in range(n)]

row, col = 0, n // 2

for num in range(1, n * n + 1):

magic_square[row][col] = num

if num % n == 0:

row = (row + 1) % n

else:

row = (row - 1 + n) % n

col = (col + 1) % n

for row in magic_square:

print(" ".join(str(num) for num in row))

n = int(input("请输入要生成的魔方阶数: "))

print_magic_square(n)

```

C++

```cpp

include

include

void print_magic_square(int n) {

std::vector> magic_square(n, std::vector(n, 0));

int row = 0, col = n / 2;

for (int num = 1; num <= n * n; ++num) {

magic_square[row][col] = num;

if (num % n == 0) {

row = (row + 1) % n;

} else {

row = (row - 1 + n) % n;

col = (col + 1) % n;

}

}

for (const auto& row : magic_square) {

for (int num : row) {

std::cout << num << " ";

}

std::cout << std::endl;

}

}

int main() {

int n;

std::cout << "请输入要生成的魔方阶数: ";

std::cin >> n;

print_magic_square(n);

return 0;

}

```

C