您的位置:首页 > 其它

顺时针打印矩阵

2016-07-21 20:57 423 查看
描述:给定一个矩阵,按照从外到里的顺序打印每一个

数字

分析

1、找到每个圈打印开始的地方(发现这个数的下标*2只要小于总的行和列就行)

2、每找到一个就循环打印

注意:

边界条件

#define  _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
void PrintMatexInCycle(int (*arr)[2], int row, int col, int start)
{
int endX = col - 1 - start;//行的结束位置
int endY = row - 1 - start;//列的结束位置
//从左到右打印
for (int i = start; i <= endX; i++)
{
cout << arr[start][i] << " ";
}

//从上到下打印
if (start < endY)
{
for (int i = start+1; i <= endY; i++)
{
cout << arr[i][endX] << " ";
}
}

//从右向左打印
if (start < endX && start < endY)
{
for (int i = endX - 1; i >= start; --i)
{
cout << arr[endY][i];
}
}

//从下到上打印
if (start < endX && start < endY - 1)
{
for (int i = endY - 1; i>=start + 1; --i)
{
cout << arr[i][start] << " ";
}
}

}

void PrintMatrixClowkwisely(int(*arr)[2],int row,int col)
{
if (arr == NULL || row <= 0 || col <= 0)
{
return;
}
int start = 0;
//找到循环打印的结束条件,每找到一个开始点打印以这个点为开始的一圈
while (start * 2 < row && start * 2 <= col)
{
PrintMatexInCycle(arr, row, col, start);//调用此函数一次打印一圈
++start;
}
}

int main()
{
int arr[][2]{{ 1, 2 }, { 3, 4 }};
PrintMatrixClowkwisely(arr, 2, 2);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  顺时针打印矩阵