酷代码 AI
菜单
服务商
DeepSeek字节豆包讯飞星火
更多选项

C++实现双螺旋矩阵:从代码到逻辑全解析

双螺旋矩阵是一种特殊的矩阵排列方式,其中数字以螺旋状从外向内填充。以下是一个用C++编写的程序,它生成并打印一个n x n的双螺旋矩阵。 ```cpp #include <iostream> #include <vector> using namespace std; void generateSpiralMatrix(int n, vector<vector<int>>& matrix) { int num = 1; int top = 0, bottom = n - 1; int left = 0, right = n - 1; while (top <= bottom && left <= right) { // Traverse from left to right for (int i = left; i <= right; ++i) { matrix[top][i] = num++; } top++; // Traverse from top to bottom for (int i = top; i <= bottom; ++i) { matrix[i][right] = num++; } right--; // Traverse from right to left (if there are still rows to traverse) if (top <= bottom) { for (int i = right; i >= left; --i) { matrix[bottom][i] = num++; } bottom--; } // Traverse from bottom to top (if there are still columns to traverse) if (left <= right) { for (int i = bottom; i >= top; --i) { matrix[i][left] = num++; } left++; } } } void printMatrix(const vector<vector<int>>& matrix) { for (const auto& row : matrix) { for (int val : row) { cout << val << "\t"; } cout << endl; } } int main() { int n; cout << "Enter the size of the matrix (n x n): "; cin >> n; vector<vector<int>> matrix(n, vector<int>(n, 0)); generateSpiralMatrix(n, matrix); printMatrix(matrix); return 0; } ``` 代码解释: 1. 函数`generateSpiralMatrix`:这个函数负责生成螺旋矩阵。它使用四个变量`top`, `bottom`, `left`, `right`来跟踪当前填充的边界。通过这四个边界,我们可以控制填充的方向。 2. 填充逻辑: - 从左到右填充顶部边界。 - 从上到下填充右侧边界。 - 如果还有行需要填充,则从右到左填充底部边界。 - 如果还有列需要填充,则从下到上填充左侧边界。 3. 函数`printMatrix`:这个函数负责打印生成的矩阵。 4. 主函数`main`:读取用户输入的矩阵大小,初始化矩阵,调用生成函数并打印结果。 额外需要注意的逻辑点: 1. 边界条件:在处理边界时,需要确保不会越界访问。 2. 方向切换:在填充过程中,适时切换填充方向。 3. 输入验证:可以添加对用户输入的验证,确保输入的n是一个正整数。 ######[AI写代码神器 | 731点数解答 | 2025-03-13 21:00:16]

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