题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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 <iostream>
#include<vector>
#include <cstdio>
using namespace std;
vector<vector<int> > matrix;
vector<int> printMatrix(vector<vector<int> > matrix) {
vector<int> res;
int m=matrix.size();
int n=matrix[0].size();
int left=0,right=n-1,up=0,down=m-1;
if(n==0||m==0)
return res;
while(up<=down&&left<=right)
{
for(int j=left;j<=right;++j){
res.push_back(matrix[up][j]);
}
for(int i=up+1;i<=down;++i){
res.push_back(matrix[i][right]);
}
for(int j=right-1;j>=left&&up<down;--j){
res.push_back(matrix[down][j]);
}
for(int i=down-1;i>up&&right>left;--i){
res.push_back(matrix[i][left]);
}
++up;
++left;
--right;
--down;
}
return res;
}
int main(){
int i, j, x, row, col;
vector<int> R;
cout << "Enter the row and column: ";
cin >> row >> col;
cout << "Enter the matrix:" << endl;
for(i=0; i<row; ++i)
{
R.clear();
for(j=0; j<col; ++j)
{
cin >> x;
R.push_back(x);
}
matrix.push_back(R);
}
vector<int> result=printMatrix(matrix);
for(int i=0;i<result.size();i++){
cout<<result[i]<<",";
}
cout<<endl;
}