1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
class { private: bool isValid(vector<vector<int> >& matrix, int x, int y, int n){ if(x < 0 || x >= n || y < 0 || y >= n || matrix[x][y] == INT_MIN) return 0; return 1; } public: vector<vector<int>> generateMatrix(int n) { vector<vector<int>> matrix(n, vector<int>(n, 0)); vector<vector<int>> res(n, vector<int>(n, 0)); int x = 0; int y = 0; int val = 1; while(1){ bool flag = 0; while(isValid(matrix, x, y, n)) res[x][y] = val++, matrix[x][y] = INT_MIN, y++, flag = 1; y--; x++; while(isValid(matrix, x, y, n)) res[x][y] = val++, matrix[x][y] = INT_MIN, x++, flag = 1; x--; y--; while(isValid(matrix, x, y, n)) res[x][y] = val++, matrix[x][y] = INT_MIN, y--, flag = 1; y++; x--; while(isValid(matrix, x, y, n)) res[x][y] = val++, matrix[x][y] = INT_MIN, x--, flag = 1; x++; y++; if(!flag) return res; } } };
|
近期评论