在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≤8。
#include<iostream>
#include<iomanip>
using namespace std;
int const N=120;
int main()
{
int n[N][N]={0};
int m,mm;
cin>>m;
mm=m;
int s=1,i,j;
//s=n[i=0][j=m-1]=1;
while(m--)
{
//m--;
i=mm-m-1;
j=m;
while(i<=m-1 &&n[i][j]==0) n[i++][j]=s++;//right
while(j>=mm-m &&n[i][j]==0) n[i][j--]=s++;//down
while(i>=mm-m &&n[i][j]==0) n[i--][j]=s++;//left
while(j<=m-1 &&n[i][j]==0) n[i][j++]=s++;//up
if(s==mm*mm)n[i+1][j-1]=s;
}
for(i=0;i<mm;i++)
{
for(j=0;j<mm;j++)
cout<<setw(3)<<n[i][j];
cout<<endl;
}
return 0;
}