顺时针打印二维数组:
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
则依次打印出数字1 2 3 4 5 10 15 20 19 18 17 16 11 6 7 8 9 14 13 12。
#include<iostream>
#include<vector>
using namespace std;
void printMat(vector<vector<int> > mat)
{
int left=0,right=mat.front().size()-1; //left:左边列号;right:右边列号
int top=0,bottom=mat.size()-1;//top:上边行号; bottom:下边行号
while(left<=right&&top<=bottom)
{
int l=left,t=top+1,r=right-1,b=bottom-1;
//上面一条边,从左到右
while(l<=right)
{
cout<<mat[top][l++]<<" ";
}
//右边一条边,从上到下
while(t<=bottom)
{
cout<<mat[t++][right]<<" ";
}
//下边一条边,从右向左
while(r>=left)
{
cout<<mat[bottom][r--]<<" ";
}
//左边一条边,从下到上
while(b>=top+1)
{
cout<<mat[b--][left]<<" ";
}
left++;
top++;
right--;
bottom--;
}
}
int main()
{
vector<vector<int> > matrix;
//二维向量初始化
for(int i=0,data=1;i<4;i++) //4行
{
vector<int> temp;
for(int j=0;j<5;j++) //5列
{
temp.push_back(data);
cout<<data<<" ";
data++;
}
cout<<endl;
matrix.push_back(temp);
}
printMat(matrix);
return 0;
}
结果:
参考:https://blog.csdn.net/u014474985/article/details/79377838