题目转化成顺时针打印矩阵
将打印步骤分为每一圈:
易推得知 2beg < rows && 2beg < cols时,可以进行下一圈
且每一圈的起点坐标一定是(x+1,y+1)
同时将每一圈分为四步:
左到右
上到下
右到左
下到上
同时对每一步步骤进行边界判断
#include <bits/stdc++.h>
using namespace std;
void ipize()
{
ios::sync_with_stdio(0);
cin.tie(0);
}
int n, m;
int p[1001][1001];
void printMatrix(int beg, int rows, int cols)
{
int endX = cols - beg - 1;
int endY = rows - beg - 1;
// from left to right.
for (int i = beg; i <= endX; i++)
cout << p[beg][i] << ' ';
// from up to down.
if (beg < endY)
for (int i = beg + 1; i <= endY; i++)
cout << p[i][endX] << ' ';
// from right to left.
if (beg < endY && beg < endX)
for (int i = endX - 1; i >= beg; i--)
{