2045:【例5.13】蛇形填数
#include <iostream>
using namespace std;
int main(){
int n;
cin>>n;
int b=1,i=0,j=n-1,a[n][n];
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
a[i][j]=0;
}
}
a[i][j]=1;
while(b<n*n){
while(a[i+1][j]==0&&i+1<n){
a[i+1][j]=++b;
i++;
}
while(a[i][j+1]==0&&j+1<n){
a[i][j+1]=++b;
j++;
}
while(a[i][j-1]==0&&j-1>=0){
a[i][j-1]=++b;
j--;
}
while(a[i-1][j]==0&&i-1>=0){
a[i-1][j]=++b;
i--;
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}

浙公网安备 33010602011771号