【每日面试题】矩阵的螺旋输出
来源:互联网 发布:淘宝卖家开花呗的条件 编辑:程序博客网 时间:2024/05/16 14:51
输入一个m*n的矩阵,将其螺旋输出,如下图:
代码如下:
//矩阵螺旋输出#define max 100int data[max][max]={0};int Output(int m,int n,int &x,int &y,int cnt,int total){if(m==1&&n==1){ data[x][y]=cnt++;printf("%d\n",data[x][y]);return cnt;}for(int i=0;i<m;i++)data[x++][y]=cnt++;if(cnt>total)return cnt;x--;y++;for(int j=0;j<n-2;j++)data[x][y++]=cnt++;if(cnt>total)return cnt;for(int l=0;l<m;l++)data[x--][y]=cnt++; if(cnt>total)return cnt;x++;y--;for(int s=0;s<n-2;s++)data[x][y--]=cnt++;return cnt;}int main(){int m=0,n=0;int cnt=1;scanf("%d%d",&m,&n); if(m>100||n>100){printf("can't process\n");return -1;}if(m==0&&n==0)return -1;if(m==0){for(int i=0;i<n;i++)data[m][i]=cnt++;for(int j=0;j<n;j++)printf("%d\n",data[m][j]);return 0;}elseif(n==0){for(int j=0;j<m;j++)data[j][n]=cnt++;for(int j=0;j<m;j++)printf("%d\t",data[j][n]);printf("\n"); return 0;}else{int x=0;int y=0;int i=m;int j=n; while(cnt<=m*n) { cnt=Output(i,j,x,y,cnt,m*n);i-=2;j-=2;x++;y++; } }for(int i=0;i<m;i++){for(int j=0;j<n;j++)printf("%d\t",data[i][j]);printf("\n");}return 0;}以上是我理解的,希望有哪位大神能指点其他的高效算法!
- 【每日面试题】矩阵的螺旋输出
- 面试题-螺旋矩阵
- 程序员面试题精选(46):矩阵式螺旋输出
- 面试题之螺旋矩阵
- (大神勿入)据说是一道面试题,然后自己就写了一发(矩阵的螺旋输出)
- [经典面试题]蛇形矩阵(螺旋矩阵)
- 输出螺旋矩阵(一)
- 输出螺旋矩阵(二)
- 输出螺旋矩阵(三)
- 矩阵式螺旋输出
- 矩阵式螺旋输出
- 矩阵式螺旋输出
- 矩阵式螺旋输出
- 输出螺旋矩阵
- 输出螺旋矩阵
- 输出螺旋矩阵
- 输出螺旋矩阵
- JavaScript输出螺旋矩阵
- Android的线程使用来更新UI----Thread、Handler、Looper、TimerTask等
- spring-data 集成mongodb
- weblogic的热部署
- java多线程总结
- 每日一结
- 【每日面试题】矩阵的螺旋输出
- 简单验证码
- 提供工作效率--先熟悉你手中的工具吧
- spring的注解使用和分散配置(10级 学员张帅鹏课堂总结)
- “仿Win8截图工具”的制作
- Linux下学习MySQL命令的笔记
- 透析C语言可变参数问题
- ACM在线评判系统核心代码
- 我的云之旅–HMaster启动说明(140)