您的位置:首页 > 职场人生

剑指offer面试题20:顺时针打印矩阵

2016-09-08 22:38 507 查看
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。

#include <iostream>

using namespace std;

void PrintCircle(int numbers[4][4], int columns, int rows, int start) {
int endcol = columns - start - 1;
int endrow = rows - start - 1;
for (int i = start; i <= endcol; i++)
cout << numbers[start][i] << " ";
for (int i = start + 1; i <= endrow; i++)
cout << numbers[i][endcol] << " ";
for (int i = endcol - 1; i >= start; i--)
cout << numbers[endrow][i] << " ";
for (int i = endrow - 1; i >= start + 1; i--)
cout << numbers[i][start] << " ";
}

void PrintMatrix(int numbers[4][4], int columns, int rows) {
if (numbers == NULL || columns <= 0 || rows <= 0)
return;
int start = 0;
while (columns > start * 2 && rows > start * 2) {
PrintCircle(numbers, columns, rows, start);
++start;
}
}

int main() {
int number[4][4] = {
{1, 2, 3, 4}, {12, 13, 14, 5}, {11, 16, 15, 6}, {10, 9, 8, 7}};

PrintMatrix(number, 4, 4);
cout << endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: