// Source : https://oj.leetcode.com/problems/spiral-matrix-ii/ // Author : Hao Chen // Date : 2014-06-30 /********************************************************************************** * * Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. * * For example, * Given n = 3, * * You should return the following matrix: * * [ * [ 1, 2, 3 ], * [ 8, 9, 4 ], * [ 7, 6, 5 ] * ] * * **********************************************************************************/ #include #include #include #include using namespace std; vector > generateMatrix(int n, int m); vector > generateMatrix(int n) { return generateMatrix(n, n); } vector > generateMatrix(int n, int m) { vector< vector > matrix(n); if (n<=0) return matrix; for(int i=0; i v(m); matrix[i] = v; } int row=n, col=m; int r, c; int cnt=1; for (r=0, c=0; r<(row+1)/2 && c<(col+1)/2; r++, c++){ //top for(int i=c; ir && i>=c; i--){ matrix[row-r-1][i] = cnt++; } //left for(int i=row-r-2; col-c-1>c && i>r; i--){ matrix[i][c] = cnt++; } } return matrix; } void printArray(vector v) { cout << "["; for(int j=0; j > &vv) { for(int i=0; i1){ m = n = atoi(argv[1]); } if (argc>2){ m = atoi(argv[2]); } vector< vector > matrix = generateMatrix(n, m); printMatrix(matrix); return 0; }