《剑指offer》:[20]顺时针打印数组
2016-06-07 09:42
281 查看
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
例如:如果输入如下矩阵:
![](https://img-blog.csdn.net/20160607093847305?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
则依次打印出:1,2,3,4,5....25; 1,2,3,4,5等等;
具体是实现代码如下:
例如:如果输入如下矩阵:
则依次打印出:1,2,3,4,5....25; 1,2,3,4,5等等;
具体是实现代码如下:
#include <iostream> using namespace std; int arr[5][5]={1,2,3,4,5, <span style="white-space:pre"> </span>16,17,18,19,6, 15,24,25,20,7, 14,23,22,21,8, 13,12,11,10,9}; void PrintMatrixInCircle(int (*array)[5],int columns,int rows,int start); void PrintMatrixClockWisely(int (*array)[5],int columns,int rows); void PrintMatrixClockWisely(int array[][5],int columns,int rows) { if(NULL==array || columns<=0 || rows<=0) return; int start=0; while(columns > 2*start && rows>2*start) { PrintMatrixInCircle(array,columns,rows,start); ++start; } } void PrintMatrixInCircle(int array[][5],int columns,int rows,int start) { int EndX=columns-1-start; int EndY=rows-1-start; for(int i=start;i<=EndX;i++)//打印第一行; cout<<array[start][i]<<" "; if(start<EndY) { for(int i=start+1;i<=EndY;i++)//打印列; cout<<array[i][EndX]<<" "; } if(start<EndX && start<EndY) { for(int i=EndX-1;i>=start;i--) //打印行; cout<<array[EndY][i]<<" "; } if(start<EndX && start<EndY-1) { for(int i=EndY-1;i>=start+1;i--) cout<<array[i][start]<<" "; } } int main() { PrintMatrixClockWisely(arr,5,5); cout<<endl; system("pause"); return 0; }运行结果:
相关文章推荐
- Laravel一个页面里有多个分页并用jQuery pagination.js实现
- jquery 获取父窗口的元素 父窗口与子窗口间交互
- Effective Java 英文 第二版 读书笔记 Item 9:Always override hashCode when you override equals
- 《剑指offer》:[19]二叉树的镜像
- 《剑指offer》:[18]如何判断树B是树A的子结构
- AngularJS 遇到的小坑与技巧小结
- div css仿京东订单流程图样式代码
- box-shadow使用, border-radius使用
- jsp页面无故弹alert
- Bootstrap学习笔记之css样式设计(2)
- AngularJS 如何在控制台进行错误调试
- JQuery异步加载PartialView的方法
- H5文件操作API
- js页面跳转整理
- Html5 ajax的跨域请求
- AngularJS之WebAPi上传
- javascript中打印当前的时间
- 【Angular2】ng2的开始_组件
- js实现模态弹窗
- js验证邮箱是否输入以及格式是否正确