给定一整数n,输出n阶蛇形巨阵的如下形式
例如
三阶蛇形巨阵如下所示
1 2 3
8 9 4
7 6 5
则输出
1 2 3 8 9 4 7 6 5
代码如下
#include <iostream>
#include <vector>
using namespace std;
int main(int argc, const char * argv[]) {
int n =0;
cin>>n;
int beginX = 0;
int beginY = 0;
int endX = n-1;
int endY = n-1;
int count = 1;
int **p= new int*[n];
for(int i=0;i<n;i++)
{
p[i]=new int[n];
}
while(true){
for(int i = beginX;i<=endX;i++){
p[beginY][i] = count;
count++;
}
beginY++;
if(beginY > endY){
break;
}
for(int i = beginY;i<=endY;i++){
p[i][endX] = count;
count++;
}
endX--;
if(beginX > endX){
break;
}
for(int i = endX; i>=beginX;i--){
p[endY][i] = count;
count++;
}
endY--;
if(beginY > endY){
break;
}
for(int i = endY;i>=beginY;i--){
p[i][beginX] = count;
count++;
}
beginX++;
if(beginX > endX){
break;
}
}
for(int i = 0;i < n;i++){
for(int j = 0;j<n;j++){
cout<<p[i][j]<<" ";
}
}
return 0;
}