您的位置:首页 > 其它

顺时针打印矩阵

2017-06-21 22:35 330 查看
#include <iostream>
#include <vector>
using namespace std;

void print_circle(vector<vector<int> >arr,int cols,int rows,int start);
void print_wisely(vector<vector<int> >arr,int cols,int rows);

int main()
{
int col,row;
while(cin>>col>>row)
{
vector<vector<int> >arr(row);
for(int i=0;i<arr.size();++i)
{
arr[i].resize(col);
}
for(int i=0;i<row;++i)
{
for(int j=0;j<col;++j)
{
cin>>arr[i][j];
}
}

print_wisely(arr,col,row);
}
return 0;
}

void print_wisely(vector<vector<int> >arr,int cols,int rows)
{
if(arr.size()==0||cols<=0||rows<=0)
return ;
int start = 0;
while(cols>start*2&&rows>start*2)
{
print_circle(arr,cols,rows,start);
++start;
}
}

void print_circle(vector<vector<int> >arr,int cols,int rows,int start)
{
int endX = cols-start-1;
int endY = rows-start-1;
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;--i)//第一个数字不再打印
{
cout<<arr[i][start]<<" ";
}
}
//cout<<endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: