gpt4 book ai didi

arrays - 如何以蜗牛模式单次循环遍历二维数组?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:30:22 25 4
gpt4 key购买 nike

给定一个二维数组,我想以蜗牛模式遍历它并使用一个单循环打印出元素.

例如,如果给定的数组是:

10 11 12 13 14
15 16 17 18 19
20 21 22 23 24
25 26 27 28 29
30 31 32 33 34

程序应该打印出:

10 15 20 25 30 31 32 33 34 29 24 19 14 13 12 11 16 21 26 27 28 23 18 17 22

所以从左上角开始,到达数组的中心。

最佳答案

这是一个 for 循环的解决方案:

只有当矩阵为:n >= m

#include <iostream>

using namespace std;

int main()
{
// int arr[4][3] = {{0, 9, 8} , {1, 10 , 7} , {2, 11, 6} , {3, 4, 5}};
// int n = 4, m = 3;

int arr[4][4] = {{0, 11, 10, 9} , {1, 12, 15, 8} , {2, 13, 14, 7} , {3, 4, 5, 6}};
int n = 4, m = 4;

int row = 0, col = 0, turn = 0;
bool isTop = true;

for(int nrElem = 0; nrElem <= (n*m); nrElem++)
{
//This part make the left, bottom, right part ( U form )
if((row < n-1-turn) && (col != m-1) && (isTop == true))
{
cout << " " << arr[row][col];
row++;
} else {
if((row == n-1-turn) && (col < m-1-turn))
{
cout << " " << arr[row][col];
col++;
} else {
if((col == m-1-turn) && (row > 0))
{
cout << " " << arr[row][col];
row--;
} else {
isTop = false;
}
}
}
//

//And this do the top backward parsing
if((col > 0) && (isTop == false))
{
cout << " " << arr[row][col];
col--;
} else {
if (isTop == false)
{
isTop = true;
turn++;
row += turn;
col += turn;
}
}
}

cout << endl;
return 0;
}

关于arrays - 如何以蜗牛模式单次循环遍历二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40572594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com