给定一个 m 行、n 列的矩阵,请按照顺时针螺旋的顺序输出矩阵中所有的元素(从[0][0]位置开始,具体请参见下图)。
方向是固定的,可以用递归方法解决,撞墙转弯之后剩下的部分也是一个矩阵,将剩下的矩阵递归,重复跑,直到跑完为止。
#include <stdio.h>
int matrix[105][105];
void rotate_print_matrix(int top, int left, int right, int down, char direction) {
if (right - left == 0 && down - top == 0) {
printf("%d", matrix[top][left]);
return ;
}
int i, j;
if (direction == 'r') {
//向右跑的话,纵坐标等于左上角的纵坐标、
i = top;
//横坐标起点为左上角横坐标,终点为右上角横坐标。
for (j = left; j <= right; j++) {
printf("%d", matrix[i][j]);
if (j != right) {
printf(" ");
}
}
//只有一个横排的话就结束了。
if (down - top == 0) {
return ;
}
else {
printf(" ");
rotate_print_matrix(top + 1, left, right, down, 'd')