JZ29 顺时针打印矩阵
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵:
[[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]
//旋转矩阵 vectorans; void re(vector >ma,vector &ans,int r,int c){ if(ma.empty()||ma[0].empty())return; if(r<=0||c<=0)return; for(auto&a:ma[0])ans.push_back(a); for(int i=1;i 1) for(int i=ma[r-1].size()-1;i>=0;i--)ans.push_back(ma[r-1][i]); if(c>1) for(int i=r-2;i>0;i--)ans.push_back(ma[i].front()); vector >temp; for(int i=1;i vector t; for(int j=1;j t.push_back(ma[i][j]); } temp.push_back(t); } re(temp,ans,r-2,c-2); } vector printMatrix(vector > matrix) { if(matrix.empty())return ans; int r = matrix.size(); int c = matrix[0].size(); re(matrix,ans,r,c); return ans; } int main() { int r, c; cin >> r >> c; vector > matrix; while (r--) { vector t; int cc = c; while (cc--) { int n; cin >> n; t.push_back(n); } matrix.push_back(t); } vector ans; ans = printMatrix(matrix, ans); return 0; }



