📜  以反向螺旋形式打印给定矩阵的 C++ 程序(1)

📅  最后修改于: 2023-12-03 15:36:22.170000             🧑  作者: Mango

以反向螺旋形式打印给定矩阵的 C++ 程序

在本文中,我们将探讨如何使用 C++ 编写一个程序,可以以反向螺旋形式打印给定矩阵。

什么是反向螺旋?

反向螺旋是指从矩阵的右下角开始,向左并向上打印,直到达到矩阵的左上角。

例如,对于以下矩阵:

1 2 3
4 5 6
7 8 9

反向螺旋输出应为:

9 6 3 2 1 4 7 8 5
实现反向螺旋打印

首先,我们需要使用一个二维数组来表示矩阵,并为其分配一些初始值:

int matrix[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };

接下来,我们需要编写一个函数,以反向螺旋输出矩阵。下面是一个实现示例:

void printMatrixInSpiral(int matrix[][3], int m, int n)
{
    int i, k = 0, l = 0;
  
    while (k < m && l < n)
    {
        // 打印第一行
        for (i = n - 1; i >= l; --i)
            cout << matrix[k][i] << " ";
        k++;
  
        // 打印最后一列
        for (i = k; i < m; ++i)
            cout << matrix[i][l] << " ";
        l++;
  
        // 打印最后一行
        if (k < m)
        {
            for (i = l; i <= n - 1; ++i)
                cout << matrix[m - 1][i] << " ";
            m--;
        }
  
        // 打印第一列
        if (l < n)
        {
            for (i = m - 1; i >= k; --i)
                cout << matrix[i][n - 1] << " ";
            n--;
        }
    }
}

该函数使用了四个循环来按照反向螺旋的方向输出矩阵。

完整代码

完整的代码如下所示:

#include <iostream>
using namespace std;

void printMatrixInSpiral(int matrix[][3], int m, int n);

int main()
{
    int matrix[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
    printMatrixInSpiral(matrix, 3, 3);

    return 0;
}

void printMatrixInSpiral(int matrix[][3], int m, int n)
{
    int i, k = 0, l = 0;
  
    while (k < m && l < n)
    {
        // 打印第一行
        for (i = n - 1; i >= l; --i)
            cout << matrix[k][i] << " ";
        k++;
  
        // 打印最后一列
        for (i = k; i < m; ++i)
            cout << matrix[i][l] << " ";
        l++;
  
        // 打印最后一行
        if (k < m)
        {
            for (i = l; i <= n - 1; ++i)
                cout << matrix[m - 1][i] << " ";
            m--;
        }
  
        // 打印第一列
        if (l < n)
        {
            for (i = m - 1; i >= k; --i)
                cout << matrix[i][n - 1] << " ";
            n--;
        }
    }
}
总结

本文中,我们讨论了如何编写一个 C++ 程序,可以以反向螺旋的方式打印给定的矩阵。我们演示了这个过程的实现方法,并呈现了完整的代码。