题目描述
在n*n方陈里填入1,2,...,n*n,要求填成蛇形。例如n=4时方陈为:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
输入
直接输入方陈的维数,即n的值。(n<=100)
输出
输出结果是蛇形方陈。
样例输入
3
样例输出
7 8 1
6 9 2
5 4 3
#include<stdio.h> int row(int (*a)[100],int *h,int *l,int *x,int n) { if(a[*h][*l-1]==0&&(*l-1>=0)) { while(--(*l)>=0) { if(a[*h][*l]!=0){break;} a[(*h)][*l]=++(*x); } (*l)++; } else if(a[*h][*l+1]==0&&*l+1<n) { while(++(*l)<n) { if(a[*h][*l]!=0){break;} a[(*h)][*l]=++(*x); } (*l)--; } } int column(int (*a)[100],int *h,int *l,int *x,int n) { if(a[*h+1][*l]==0&&(*h+1<n)) { while(++(*h)<n) { if(a[*h][*l]!=0){break;} a[(*h)][*l]=++(*x); } (*h)--; } else if(a[*h-1][*l]==0&&(*h-1>=0)) { while(--(*h)>=0) { if(a[*h][*l]!=0){break;} a[(*h)][*l]=++(*x); } (*h)++; } } int main(void) { int n,i,j,temp,h,l,count; while(scanf("%d",&n)!=EOF) { int a[100][100]={0};a[0][n-1]=1; count=1;h=0;l=n-1; while(count<(n*n)) { column(a,&h,&l,&count,n); row(a,&h,&l,&count,n); } for(i=0;i<n;i++) { for(j=0;j<n;j++) { printf("%d ",a[i][j]); } printf("\n"); } printf("\n"); } }