Spiral Matrix II

来源:互联网 发布:mysql 存储过程语法 编辑:程序博客网 时间:2024/06/14 02:28

Given an integer n, generate a square matrix filled with elements from 1 ton2 in spiral order.

For example,
Given n = 3,

You should return the following matrix:
[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]]


题目解析:

(1)一开始希望找到每个数字对应的公式,后来没找到

(2)所以只能是比较简单的对每一圈进行赋值。


#include <iostream>#include <vector>using namespace std;vector<vector<int> > generateMatrix(int n) {vector<int> temp(n,0);vector<vector<int>> result(n,temp);if(n<1)return result;int index = 1;int cycles = 0;while(n-2*cycles>1){int row = cycles;int col = cycles;for(int i=0;i<n-2*cycles;i++){result[row][col] = index;index++;col++;}col--;for(int i=0;i<n-2*cycles-1;i++){row++;result[row][col] = index;index++;}for(int i=0;i<n-2*cycles-1;i++){col--;result[row][col] = index;index++;}for(int i=0;i<n-2*cycles-2;i++){row--;result[row][col] = index;index++;}cycles++;}if(n-2*cycles == 1){result[cycles][cycles] = n*n;}return result;}void printArrayList(vector<vector<int> > &result){for(vector<vector<int>>::size_type i=0;i<result.size();i++){vector<int> temp = result[i];for(vector<int>::size_type j=0;j<temp.size();j++){cout << temp[j] << "";}cout << endl;}}int main(void){int n = 5;vector<vector<int> > result = generateMatrix(n);printArrayList(result);system("pause");return 0;}


0 0
原创粉丝点击