138 顺时针打印矩阵
2014-11-09 16:53
176 查看
38、顺时针打印矩阵
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
例如:如果输入如下矩阵:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
则依次打印出数字 1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10 。
分析:包括 Autodesk、EMC 在内的多家公司在面试或者笔试里采用过这道题。
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
例如:如果输入如下矩阵:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
则依次打印出数字 1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10 。
分析:包括 Autodesk、EMC 在内的多家公司在面试或者笔试里采用过这道题。
/* 38、顺时针打印矩阵 题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 例如:如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字 1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10 。 分析:包括 Autodesk、EMC 在内的多家公司在面试或者笔试里采用过这道题。 模拟一下即可 */ #include<iostream> #include<stdio.h> #define N 100 using namespace std; int map ,vis ; int main() { int n,m,i,j,tot; while(scanf("%d%d",&n,&m),n+m) { for(i=0;i<n;i++)//输入一个矩阵 for(j=0;j<m;j++) scanf("%d",&map[i][j]); memset(vis,0,sizeof(vis)); tot=1;i=0;j=0; while(tot<=n*m) { while(j<m&&!vis[i][j]) { printf("%d ",map[i][j]); vis[i][j]=1;tot++; j++; } j--;i++; while(i<n&&!vis[i][j]) { printf("%d ",map[i][j]); vis[i][j]=1;tot++; i++; } i--;j--; while(j>=0&&!vis[i][j]) { printf("%d ",map[i][j]); vis[i][j]=1;tot++; j--; } j++;i--; while(i>=0&&!vis[i][j]) { printf("%d ",map[i][j]); vis[i][j]=1;tot++; i--; } j++;i++; } printf("\n"); } return 0; } /* 4 4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 2 3 1 4 8 5 7 9 4 3 1 4 5 2 7 8 3 9 4 4 6 9 */
相关文章推荐
- 剑指offer_面试题20_顺时针打印矩阵(思路在一步步分解之中)
- 剑指offer 顺时针打印矩阵
- 剑指Offer之面试题20:顺时针打印矩阵
- 顺时针打印矩阵
- 剑指offer 面试题20 顺时针打印矩阵
- 剑指offer面试题20:顺时针打印矩阵
- 【剑指offer系列】 顺时针打印矩阵___20
- 牛客网剑指offer—顺时针打印矩阵
- 剑指OFFER——顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针方向打印矩阵
- 矩阵------顺时针打印矩阵+顺时针旋转矩阵+之字形打印矩阵(Java)
- 顺时针打印矩阵并返回数组
- 剑指offer 顺时针打印矩阵
- 【面试题二十】顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印旋转打印矩阵
- C++输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,
- 1,2,3…n*n 的数字按照顺时针螺旋的形式打印成矩阵(递归)
- 顺时针打印矩阵