#include <iostream>
using namespace std;
void printMatrix(vector<vector<int> > arr, int r1, int c1, int r2, int c2, vector<int> &res){
if(r1 == r2) res.push_back(arr[r1][c1]);
else {
int curR = r1, curC = c1;
while(curR < r2) res.push_back(arr[curR++][curC]);
while(curC > c2) res.push_back(arr[curR][curC--]);
while(curR > r1) res.push_back(arr[curR--][curC]);
while(curC < c1) res.push_back(arr[curR][curC++]);
}
}
int main(){
vector<vector<int> > arr(4, vector<int>(4));
for(int i = 0; i < 4; i++)
for(int j = 0; j < 4; j++)
arr[i][j] = i * 4 + j + 1;
int r1 = 0, c1 = arr[0].size() - 1;
int r2 = arr.size() - 1, c2 = 0;
vector<int> res;
while(r1 <= r2) printMatrix(arr, r1++, c1--, r2--, c2++, res);
}
}
有一个n*n的二阶数组,从右上角开始,顺时针,从外到内,依次遍历所有元素
于 2019-03-28 14:55:28 首次发布