面试题20:打印矩阵
来源:互联网 发布:最小公约数算法 编辑:程序博客网 时间:2024/04/30 00:15
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵:
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.
#include <stdio.h>#define MAXSIZE 1000int arr[MAXSIZE][MAXSIZE] = {0};void printMatrix(int m,int n);int row=0;int col=0;int main(){ int i,j; row=4; col=4; int k=1; for(i=0;i<row; i++) { for(j=0;j<col; j++) { arr[i][j]=k; k++; } } i=0; j=0; while(i<row && j < col) { printMatrix(i,j); //每次打印一圈之后下一次要打印的起始位置为之前的行和列+1 i++; j++; //每次打印一圈之后行和列要减少1 row--; col--; } printf("\n"); return 0;}void printMatrix(int m,int n){//m为当前要打印矩阵的起始行下标,n为当前要打印矩阵的起始列下标 int i=m,j=n;//用i和j进行遍历//从左到右输出该行,i,j的值为起始下标,此过程中i不变,输出当前行,停止条件为j超过要打印的列数col for( ;j<col;j++){ printf("%d ",arr[i][j]); } j--;//越界之后退回当前列//从上到下输出该列,i的值为起始行+1,此过程中j不变,输出当前列,停止条件为i超过要打印的行数row for(i++;i<row;i++){ printf("%d ",arr[i][j]); } i--;//越界之后退回当前行//j回退,从右到左输出该行,停止条件为j超过要打印的起始列数n for(j--;j>=n;j--){ printf("%d ",arr[i][j]); } j++;//i回退,从下到上输出该行,停止条件为i超过要打印的起始行数row for(i--;i>m;i--){ printf("%d ",arr[i][j]); }}
来源:http://www.cnblogs.com/xing901022/p/3768582.html
0 0
- 面试题20:打印矩阵
- 面试题20:顺时针打印矩阵 ***
- 面试题20 顺时针打印矩阵
- 面试题20:顺时针打印矩阵
- 面试题20顺时针打印矩阵
- 面试题20顺时针打印矩阵
- 面试题20:顺时针打印矩阵
- 面试题20:顺时针打印矩阵
- 面试题20:顺时针打印矩阵
- 面试题20:顺时针打印矩阵
- 面试题20:顺时针打印矩阵
- 面试题20:顺时针打印矩阵
- 面试题20顺时针打印矩阵
- 【面试题20】顺时针打印矩阵
- 面试题20:顺时针打印矩阵
- 面试题20:顺时针打印矩阵
- 面试题20—顺序打印矩阵
- 面试题20:顺时针打印矩阵
- Using varnish to accelerate file serving out of GridFS
- LeetCode 198. House Robber
- 从1.5k到18k, 一个程序员的5年成长之路
- rang() & xrange()
- virtualbox+ubuntu设置共享文件夹
- 面试题20:打印矩阵
- 3-3
- set集合(去重)
- sys.exc_info()获取异常
- 如何使用latex排版并排放置两张图
- sys.path导入外部模块
- 数据结构面试题总结7——数组:最大连续子段和、最大连续子段积
- 正则表达式
- 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。 比如字符串“abacacde”过滤结果为“abcde”。