在n*n方阵里填入1,2,..........,n*n,要求填成蛇形。例如n=4时方阵为:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
代码如下:
#include<cstdio>
#include<cstring>
using namespace std;
#define MAN 100
int a[MAN][MAN];
int main(){
int n;
int ans,i,j;
while(scanf("%d",&n)!=EOF){
memset(a,0,sizeof(a));
ans=1;
a[0][n-1]=ans;
i=0;j=n-1;
while(ans<n*n){
while(i+1<n&&!a[i+1][j]){
a[++i][j]=++ans;
}
while(j-1>=0&&!a[i][j-1]){
a[i][--j]=++ans;
}
while(i-1>=0&&!a[i-1][j]){
a[--i][j]=++ans;
}
while(j+1<n&&!a[i][j+1]){
a[i][++j]=++ans;
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
printf("%3d",a[i][j]);
}
printf("\n");
}
}
return 0;
}