#include<iostream>
#include<string.h>
using namespace std;
const int MAXN=500;
int map[MAXN][MAXN];
void printMap(int n) {
for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j) {
cout<<map[i][j]<<" ";
}
}
cout<<endl;
}
int main() {
int n;
cin>>n;
for(int i=0;i<=n+1;++i) {
for(int j=0;j<=n+1;++j)
map[i][j] = MAXN; //设置哨兵
}
//init
for(int i=1;i<=n;++i) {
for(int j=1;j<=n;++j)
map[i][j] = 0;
}
int cnt = 1;
int col = 1;
int row = 1;
while(cnt<=n*n) {
//上横
while( 0 == map[row][col] ) {
map[row][col++]=cnt++;
if(cnt==n*n+1) {
printMap(n);
return 0;
}
}
col--;
row++;
//右竖
while( 0 == map[row][col] ) {
map[row++][col]=cnt++;
if(cnt==n*n+1) {
printMap(n);
return 0;
}
}
row--;
col--;
//下横
while( 0 == map[row][col] ) {
map[row][col--]=cnt++;
if(cnt==n*n+1) {
printMap(n);
return 0;
}
}
col++;
row--;
//左竖
while( 0 == map[row][col] ) {
map[row--][col]=cnt++;
if(cnt==n*n+1) {
printMap(n);
return 0;
}
}
row++;
col++;
}
return 0;
}
蛇形数组
最新推荐文章于 2024-03-21 17:09:01 发布