#include <iostream>
#include <vector>
using namespace std;
/*row是行,column是列,缩写为r和c,(upr,upc)是左上角的边界点,(dr,dc)是右下角的边界点
*/
void CoutMatrix(vector<vector<int>> matrix, int upr, int upc, int dr, int dc){
if( upr == dr){
for(int j = upc; j < dc; j++)
cout << matrix[upr][j] <<endl;
}
else if( upc == dc){
for(int i = upr; i < dr; i++)
cout << matrix[i][upc] <<endl;
}
else{
int i = upr, j = upc;
while(j != dc)
cout << matrix[i][j++] <<endl;
while(i != dr)
cout << matrix[i++][j] <<endl;
while(j != upc)
cout << matrix[i][j--] <<endl;
while(i != upr)
cout << matrix[i--][j] <<endl;
}
}
int main(){
/*
vector<vector<int>> matrix = {{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13,14, 15, 16}};
*/
vector<vector<int>> matrix(5,vector<int>(4));
int n = 5, m = 4,count =1;
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
matrix[i][j] = count++;
}
}
int upr = 0, upc = 0, dr = matrix.size() - 1, dc = matrix[0].size() - 1;
while(upr <= dr && upc <= dc){
CoutMatrix(matrix, upr++, upc++, dr--, dc--);
}
/*
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
cout << matrix[i][j]<< endl;
}
}
*/
system("pause");
return 0;
}
关注我,会定期更新数据结构与算法,C++编程,leetcode刷题,开发中的感悟,共同学习。加油!!!