C++打印螺旋矩阵

来源:百度知道 编辑:UC知道 时间:2024/09/28 07:16:09
N*N的矩阵,例如 N=4,则顺时针打印
16 15 14 13
05 04 03 12
06 01 02 11
07 08 09 10

#include <vector>
#include "stdio.h"
using namespace std;

int main()
{
int N=9;
vector< vector<int> > m;
if(N<=0)return 0;
int start;
if(N%2==0){
//inited matrix of 0*0
start=2;
}else{
//inited matrix of 1*1
vector<int> t1;
t1.push_back(1);
m.push_back(t1);
start=1;
}
for(int i=start;i<=N;i+=2){
vector<int> top,down;
for(int j=0;j<i;j++){
top.push_back(i*i-j);
down.push_back((i-2)*(i-2)+i-1+j);
if(j>0 && j<i-1){
m[j-1].insert(m[j-1].begin(),j+(i-2)*(i-2));
m[j-1].push_back(i*i-i-j+1);
}
}

m.insert(m.begin(),top);
m.push_back(down);
}