P402 二维数组




//蛇形方阵

#include<stdio.h>
int a[12][12];
int main(){
int n,i,j,tot;
scanf("%d",&n);
for(a[i=1][j=1]=tot=1;tot<n*n;){
if(j+1<=n)a[i][++j]=++tot;
while(j-1>0&&i+1<=n&&!a[i+1][j-1])a[++i][--j]=++tot;
if(i+1<=n)a[++i][j]=++tot;
while(j+1<=n&&i-1>0&&!a[i-1][j+1])a[--i][++j]=++tot;
}
for(i=1;i<=n;i++){
for(j=1;j<=n;j++)printf("%4d",a[i][j]);
printf("\n");
}
return 0;
}
//1150 【基础】螺旋方阵

#include<cstdio>
#define UP(i,m,n) for(i=m;i<=n;i++)
#define DN(i,m,n) for(i=m;i>=n;i--)
int a[110][110];
int main(){
int n,i,j,k,tot=0;
scanf("%d",&n);
UP(k,1,n/2){
UP(j,k,n-k)a[k][j]=++tot; //→
UP(i,k,n-k)a[i][n-k+1]=++tot; //↓
DN(j,n-k+1,k+1)a[n-k+1][j]=++tot; //←
DN(i,n-k+1,k+1)a[i][k]=++tot; //↑
}
if(n%2)a[n/2+1][n/2+1]=++tot;
UP(i,1,n){
UP(j,1,n)printf("%3d",a[i][j]);
puts("");
}
return 0;
}
#include<cstdio>
#define UP(i,m,n) for(i=m;i<=n;i++)
#define DN(i,m,n) for(i=m;i>=n;i--)
int a[110][110];
int main(){
int n,i,j,k,tot=0;
scanf("%d",&n);
UP(k,1,n/2){
i=k; UP(j,k,n-k)a[i][j]=++tot;
j=n-k+1; UP(i,k,n-k)a[i][j]=++tot;
i=n-k+1; DN(j,n-k+1,k+1)a[i][j]=++tot;
j=k; DN(i,n-k+1,k+1)a[i][j]=++tot;
}
if(n%2)a[n/2+1][n/2+1]=++tot;
UP(i,1,n){
UP(j,1,n)printf("%3d",a[i][j]);
puts("");
}
return 0;
}
//codevs1160 蛇形矩阵

#include<cstdio>
#define UP(i,m,n) for(i=m;i<=n;i++)
#define DN(i,m,n) for(i=m;i>=n;i--)
int a[210][210];
int main(){
int n,i,j,k,tot=0,m,s=0;
scanf("%d",&n); m=n/2;
a[0+m][0+m]=++tot;
UP(k,1,m){
j=k; DN(i,k-1,-k)a[i+m][j+m]=++tot;
i=-k; DN(j,k-1,-k)a[i+m][j+m]=++tot;
j=-k; UP(i,-(k-1),k)a[i+m][j+m]=++tot;
i=k; UP(j,-(k-1),k)a[i+m][j+m]=++tot;
}
UP(i,0,n-1){
UP(j,0,n-1)if(i==j || i+j==n-1)s+=a[i][j];
UP(j,0,n-2)printf("%d ",a[i][j]);
printf("%d\n",a[i][n-1]);
}
printf("%d\n",s);
return 0;
}

浙公网安备 33010602011771号