(大神勿入)据说是一道面试题,然后自己就写了一发(矩阵的螺旋输出)
2012-04-17 09:46
411 查看
给你一个n*m的矩阵,让你输出如下的数字矩阵:
01 06 05
02 03 04
如下截图:
![](http://my.csdn.net/uploads/201204/17/1334627321_8898.PNG)
就是这样,然后自己就写了一发:
代码贴出来供参考:
几组测试样例如下:
01 06 05
02 03 04
如下截图:
就是这样,然后自己就写了一发:
代码贴出来供参考:
#include <stdio.h> #define MAX 1000 using namespace std; int maze[MAX][MAX]; int Update(int n,int m,int &sx,int &sy,int cnt,int sum) { if(n==1&&m==1) { maze[sx][sy]=cnt++; return cnt; } for(int j=0;j<n;j++) maze[sx++][sy]=cnt++; if(cnt>sum) return cnt; sx--,sy++; for(int j=0;j<m-2;j++) maze[sx][sy++]=cnt++; if(cnt>sum) return cnt; for(int j=0;j<n;j++) maze[sx--][sy]=cnt++; if(cnt>sum) return cnt; sx++,sy--; for(int j=0;j<m-2;j++) maze[sx][sy--]=cnt++; return cnt; } int main() { int n,m; while(scanf("%d%d",&n,&m)!=EOF) { int cnt = 1; if(n==1) { for(int j=0;j<m;j++) maze[0][j]=cnt++; } else if(m==1) { for(int i=0;i<n;i++) maze[i][0]=cnt++; } else { int sx = 0,sy = 0; int tn = n, tm = m; while(cnt<=n*m) { cnt = Update(tn,tm,sx,sy,cnt,n*m); sx++; sy++; tn-=2; tm-=2; } } for(int i=0;i<n;i++) for(int j=0;j<m;j++) printf("%02d%c",maze[i][j],j==m-1?'\n':' '); } return 0; }
几组测试样例如下:
相关文章推荐
- [算法]方正面试题:N×N矩阵螺旋打印输出
- 【每日面试题】矩阵的螺旋输出
- [LeetCode] Spiral Matrix 螺旋输出矩阵
- 一道据说是苹果的面试题
- 一道C语言面试题printf输出问题,高手们都来看看吧
- C语言输出螺旋矩阵
- 自己用python写的螺旋矩阵生成算法
- 矩阵螺旋输出
- 一道简单的面试题,据说90%人不能在30分钟内做出来
- 一道面试题:三个线程循环有序输出10次ABCABC...
- 螺旋矩阵----在博客园上看见别人的算法没有看明白自己搞了一个。
- 剖析一道螺旋队列面试题
- N×N矩阵螺旋打印输出
- 网摘一道百度2014年9月25日面试题(题目是网上看到的,代码是自己写的)
- 分析一道据说是月薪上万的面试题 - 猜生日
- 矩阵螺旋输出
- JavaScript定义及输出螺旋矩阵的方法详解
- 笔试题&面试题:CW输出矩阵
- 一道多线程面试题分析(控制输出顺序)
- 矩阵螺旋输出