顺时针打印矩阵(C++版)

题目:

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字

输入矩阵: 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 
#include 

using namespace std;

vector printMatrix(vector > num) 
{

	int cols = num[0].size();
	int rows = num.size();

	int stRow = 0;
	int stCol = 0;
	int edRow = rows - 1;
	int edCol = cols - 1;

	vector m;

	// 矩阵分圈
	while(stRow <= edRow && stCol <= edCol)
	{
		//printEdge(matrix, res, stRow++, stCol++, edRow--, edCol--);
		// 只有一行
		if(stRow == edRow)
		{
			for(int i = stCol; i <= edCol; ++i)
			{
				//cout< > num(2, 2);
	vector res;

	for (int i = 0; i < 2; ++i)
	{
		for (int j = 0; j < 2; ++j)
		{
			num[i][j] = i + j + 1;
		}
	}

	res = printMatrix(num);

	return 0;
}

你可能感兴趣的:(算法面试题系列,C++学习系列)