提问人:Devraj Meena 提问时间:7/1/2023 最后编辑:Devraj Meena 更新时间:7/1/2023 访问量:33
阵列矩阵的螺旋打印
Spiral Print of An Array Matrix
问:
`#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) 复杂性中求解。
答: 暂无答案
评论