题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 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.
解答:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73#include<stdio.h> void PrintCircle(int num[3][3],int col,int row,int start) { //把数组看成一些圈,随着打印圈缩小 int endX=col-1-start; int endY=row-1-start; //从左到右打印 int i=start; for(i;i<=endX;++i) { int number=num[start][i]; printf("%dt",number); } //从上到下打印 //起始列必须小于终止列 if(start<endY) { int i=start+1; for(i;i<=endY;++i) { int number=num[i][endX]; printf("%dt",number); } } //从右到左打印 //终止行及终止列必须大于起始行起始列 //至少两行两列 if(start<endX&&start<endY) { int i=endX-1; for(i;i>=start;--i) { int number=num[endY][i]; printf("%dt",number); } } //从下到上打印 //至少三行两列 //终止行比起始行大2,终止列比起始列大 if(start<endX&&start<endY-1) { int i=endY-1; for(i;i>=start+1;--i) { int number=num[i][start]; printf("%dt",number); } } } void Print(int num[3][3],int col,int row) { if(num==NULL||col<=0||row<=0) return ; int start=0; while(col>(start*2)&&row>(start*2)) { PrintCircle(num,col,row,start); ++start; } printf("n"); } int main() { int a[3][3]={1,2,3,4,5,6,7,8,9}; Print(a,3,3); return 0; }
最后
以上就是不安皮带最近收集整理的关于【剑指offer】——顺时针打印矩阵的全部内容,更多相关【剑指offer】——顺时针打印矩阵内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复