如何在cpp中遍历具有预定义顺序的数组

时间:2013-12-18 13:50:03

标签: c++ arrays traversal

对于m * n的数组,请说

{{a, b, c},  
{d, e, f},  
{g, h, i}}  

在a,b,c,f,i,h,g,d(顺时针)等顺序中遍历它的最佳做法是什么?

热烈欢迎任何相关技巧的外部链接。

2 个答案:

答案 0 :(得分:2)

驴:“我们在吗?”史莱克:“不”。驴子:“我们在吗?”史莱克:“不”。驴子:“我们在吗?”史莱克:“是的,所以我向右转”。重复,直到你到达Far,Far Away。

四个枚举,EdirRight,EdrDown,EdrLeft,EdrUp,该类型的'currentDirection'变量,'之前访问'的布尔地图。

在do / while循环中打开currentDirection的case。在每种情况下,计算下一个位置,看看它是否已被访问过或超出界限。如果以前访问过,那么你就完成了。如果超出范围,请将currentDirection设置为下一个顺时针方向并重新计算下一个位置。

向中心旋转应该是一个很小的延伸 - 只需在转弯后重新检查'之前访问'。

答案 1 :(得分:0)

想想要做一个圈子你需要做什么。从左上角开始,你向右移动m个元素,然后向下n-1个元素,向左移动m-1个元素,向右移动n-2个元素,向右移动m-2个元素,依此类推。