阵列矩阵的螺旋打印

Spiral Print of An Array Matrix

提问人:Devraj Meena 提问时间:7/1/2023 最后编辑:Devraj Meena 更新时间:7/1/2023 访问量:33

问:

`#include <iostream>
#include <vector>
using namespace std;
int main()
{
    vector<vector<int>> arr{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
    int number = 0;
    int rows = 0;
    int column = 0;
    bool isgoingupdown = false;
    int numrows = arr.size();
    int numcolumn = arr[1].size();
    bool isgoingrightleft = true;
    while (number < numrows * numcolumn + 1)
    {
        if (isgoingrightleft)
        {
            if (column == numcolumn - 1)
            {
                cout << arr[rows][column];
                rows = rows + 1;
                isgoingupdown = true;
                isgoingrightleft = false;
                numrows--;
                number++;
            }
            else
            {
                cout << arr[rows][column];
                column++;
                number++;
            }
        }
        if (isgoingupdown && column == numcolumn - 1)
        {
            if (rows == numrows)
            {
                cout << arr[rows][column];
                isgoingrightleft = true;
                isgoingupdown = false;
                column--;
                number++;
                numcolumn--;
            }
            else
            {
                cout << arr[rows][column];
                rows++;
                number++;
            }
        }

        if (isgoingrightleft && rows == numrows)
        {
            if (column== arr[0].size()-numcolumn-1)
            {
                cout<<arr[rows][column];
                number++;
                numrows--;
                isgoingupdown = true;
                isgoingrightleft = false;
                rows--;
            }
            else
            {
                cout<<arr[rows][column];
                column--;
                
                number++;
               
                
            }
        }
        if (isgoingupdown && column == arr[1].size() - numcolumn - 1)
        {
            if (rows == arr.size() - 1 - numrows)
            {
                cout << arr[rows][column];
                number++;
                isgoingrightleft = true;
                isgoingupdown = false;
                numcolumn--;
                column++;
            }

            else
            {
                cout << arr[rows][column];
                rows--;
                number++;
            }
        }
    }

    return 0;
}

为什么此代码只生成 123698 而不是 745?

我期待123698745而不是123698,我尝试了列的几个值,也使用了 GPT,但无法进入解决方案。 这是我编写的以螺旋图案打印矩阵的代码,但在完整解决方案中 8 后我无法完全打印解决方案。 我尝试在 O(n) 复杂性中求解。

阵列多 维阵列 打印 2D 螺旋

评论


答: 暂无答案