酷代码 AI
菜单
服务商

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]

相关提问
发财导航,免费问AI
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]