张绍忠 • 5年前
#include <cstdio>
#include <iostream>
using namespace std;
int main()
{
int a[100][100];
int i,N;
cin >>N;
enum Way{
Down,Left,Up,Right
};
for(int i=0;i<N;i++)
for(int j=0;j<N;j++)
a[i][j]=0;
enum Way way;
way=Down;
int pRow=0;int pCol=N-1;
i=1;
while(i<=N*N) {
a[pRow][pCol]=i++;
if(way==Down){
if( pRow+1<=N-1 && a[pRow+1][pCol]==0){
pRow++;
}
else {
way=Left;pCol--;
}
continue;
}
if(way==Left){
if( pCol-1>=0 && a[pRow][pCol-1]==0){
pCol--;
}
else {
way=Up;pRow--;
}
continue;
}
if(way==Up){
if(pRow-1>=0 && a[pRow-1][pCol]==0){
pRow--;
}
else {
way=Right;pCol++;
}
continue;
}
if(way==Right){
if (pCol+1<=N-1 && a[pRow][pCol+1]==0){
pCol++;
}
else {
way=Down;pRow++;
}
continue;
}
}
for(int i=0;i<N;i++){
for(int j=0;j<N;j++)
printf("%2d%s",a[i][j]," ");;
cout << "\n";
}
return 0;
}
评论:
请先登录,才能进行评论