C++实现N阶奇数幻方的生成与输出
以下是实现生成N阶奇数幻方的C++代码: ```cpp #include <iostream> #include <iomanip> using namespace std; const int MAXN = 100; int magicSquare[MAXN][MAXN]; // 生成N阶奇数幻方 void generateMagicSquare(int n) { // 初始化幻方数组 for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { magicSquare[i][j] = 0; } } // 把1放在第一行正中 int row = 0, col = n / 2; magicSquare[row][col] = 1; // 填充剩下的n*n - 1个数 for (int num = 2; num <= n * n; ++num) { int nextRow = (row - 1 + n) % n; // 计算右上一格的行 int nextCol = (col + 1) % n; // 计算右上一格的列 // 如果右上一格已经有数填入,或者超出了顶行且超出了最右列 if (magicSquare[nextRow][nextCol] != 0) { row = (row + 1) % n; // 放在前一个数的下一行同一列的格内 } else { row = nextRow; col = nextCol; } magicSquare[row][col] = num; } } // 输出幻方 void printMagicSquare(int n) { for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { cout << magicSquare[i][j]; if (j < n - 1) { cout << " "; } } cout << endl; } } int main() { int n; cin >> n; // 检查输入是否为奇数且小于100 if (n % 2 == 0 || n >= 100) { cout << "输入必须是小于100的奇数。" << endl; return 1; } // 生成幻方 generateMagicSquare(n); // 输出幻方 printMagicSquare(n); return 0; } ``` ### 代码解释: 1. **初始化幻方数组**:将幻方数组`magicSquare`的所有元素初始化为0。 2. **放置数字1**:把1放在第一行正中。 3. **填充剩下的数字**:按照规则填充剩下的`n*n - 1`个数。 4. **输出幻方**:按行输出幻方的每个元素。 ### 复杂度分析: - **时间复杂度**:$O(n^2)$,因为需要填充$n^2$个数字。 - **空间复杂度**:$O(n^2)$,主要用于存储幻方数组。 ######[AI问答 | 731点数解答 | 2026-02-27 19:05:24]
- 代码填空挑战:完成正态分布、随机数生成及数据处理代码(阿里通义 | 506点数解答 | 2025-03-23 14:32:14)307
- 挑战!完成代码填空解锁数据处理奥秘(字节豆包 | 116点数解答 | 2025-03-26 22:22:15)327
- 挑战填空!完成这段 NumPy 代码实现数据生成与保存(DeepSeek | 178点数解答 | 2025-03-26 22:26:30)387
- 超详细!整数奇偶与倍数判断代码解析及补全(字节豆包 | 462点数解答 | 2026-01-08 12:43:56)35
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)330
- 幼儿园小朋友学号奇偶分类:代码实现与详细解释(字节豆包 | 406点数解答 | 2025-11-26 19:39:05)51
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)298
- C++实现:输入整数判断奇偶性及是否为 5 或 4 的倍数(DeepSeek | 137点数解答 | 2026-01-04 19:15:44)31
- C++:判断输入整数奇偶性及是否为 4 或 5 的倍数(字节豆包 | 159点数解答 | 2026-01-17 19:02:05)33
- 5条新春贺语,开启龙年吉祥团圆新篇章!(字节豆包 | 135点数解答 | 2025-01-15 14:43:34)309
- C++代码:输入数字判断奇偶性及是否为 5 或 4 的倍数(字节豆包 | 409点数解答 | 2025-12-20 19:04:17)29
- C++实现喵际数独锦标赛自动评判系统:快速验证数独解答正确性(字节豆包 | 666点数解答 | 2025-05-16 16:46:31)164