顺时针打印矩阵
2012-07-16 10:13
148 查看
Q:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字
A:注意判断转向和每次转向的临界。
四个转向:右->下,下->左,左->上,上->右
临界初始(矩阵为mxn):右临界为n-1,下临界为m-1,左临界为0,上临界为1
A:注意判断转向和每次转向的临界。
四个转向:右->下,下->左,左->上,上->右
临界初始(矩阵为mxn):右临界为n-1,下临界为m-1,左临界为0,上临界为1
//定义四个方向 enum Direct {Left,Right,Up,Down}; void Func(int **matrix,int m,int n) { //初始增量为向右 int stepX=0; int stepY=1; Direct direct=Right; //初始范围,注意up为1而不为0 int rangeLeft=0; int rangeRight=n-1; int rangeUp=1; int rangeDown=m-1; //初始位置为第一个 int x=0,y=0; for(int i=0;i<m*n;++i) { cout <<matrix[x][y]<<" "; switch(direct) { case Left: { if(y>rangeLeft) y+=stepY; else { direct=Up; stepX=-1; x+=stepX; rangeLeft+=1; } break; } case Right: { if(y<rangeRight) y+=stepY; else { direct=Down; stepX=1; x+=stepX; rangeRight-=1; } break; } case Up: { if(x>rangeUp) x+=stepX; else { direct=Right; stepY=1; y+=stepY; rangeUp+=1; } break; } case Down: { if(x<rangeDown) x+=stepX; else { direct=Left; stepY=-1; y+=stepY; rangeDown-=1; } break; } default: break; } } cout <<endl; }
相关文章推荐
- 由外向里顺时针打印矩阵元素
- 剑指offer--面试题29:顺时针打印矩阵
- 程序员面试题精选100题(51)-顺时针打印矩阵
- 面试题40:顺时针打印矩阵
- 20、顺时针打印矩阵
- 剑指Offer----面试题20:顺时针打印矩阵
- java面试题:顺时针打印矩阵
- java 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,
- 剑指offer-4-面试题20:顺时针打印矩阵(画图使抽象问题形象化)
- 顺时针打印矩阵
- 顺时针打印矩阵
- 二叉树的镜像||顺时针打印矩阵
- 剑指offer-面试题 20:顺时针打印矩阵
- Q20:顺时针打印矩阵
- 剑指offer-顺时针打印矩阵
- 顺时针打印矩阵
- 面试题20:顺时针打印矩阵
- 顺时针打印矩阵
- 【追求进步】顺时针打印矩阵【继续理解】
- 九度 题目1391:顺时针打印矩阵