2025-03-17 23:14:12

📚笔试题里的趣味挑战螺旋矩阵的C++实现🧐

导读 在编程的世界里,螺旋矩阵是一个经典的算法问题,它考验了我们对二维数组和循环逻辑的理解。🌟今天,让我们用C++来轻松搞定这个题目吧!题...

在编程的世界里,螺旋矩阵是一个经典的算法问题,它考验了我们对二维数组和循环逻辑的理解。🌟今天,让我们用C++来轻松搞定这个题目吧!题目要求:给定一个正整数 `n`,输出一个 `n×n` 的螺旋矩阵。例如,当 `n=3` 时,输出如下:

```

123

894

765

```

首先,我们需要定义一个二维数组来存储结果。然后,通过四个方向(右、下、左、上)模拟螺旋路径,并用一个计数器记录填充值。当遍历完所有位置后,即可得到最终答案。💡

代码实现并不复杂,关键是边界条件的处理和方向切换逻辑。以下是一个简单的框架:

```cpp

include

using namespace std;

void generateSpiralMatrix(int n) {

int matrix[n][n];

int num = 1;

int top = 0, bottom = n-1, left = 0, right = n-1;

while (top <= bottom && left <= right) {

for (int i = left; i <= right; ++i) matrix[top][i] = num++;

top++;

for (int i = top; i <= bottom; ++i) matrix[i][right] = num++;

right--;

if (top <= bottom) {

for (int i = right; i >= left; --i) matrix[bottom][i] = num++;

bottom--;

}

if (left <= right) {

for (int i = bottom; i >= top; --i) matrix[i][left] = num++;

left++;

}

}

// 输出结果

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

for (int j = 0; j < n; ++j) cout << matrix[i][j] << "\t";

cout << endl;

}

}

int main() {

int n;

cout << "请输入n的值:" << endl;

cin >> n;

generateSpiralMatrix(n);

return 0;

}

```

通过这段代码,你可以快速生成任意大小的螺旋矩阵。💪快来试试吧,看看你能画出多大的螺旋矩阵!✨