【题目描述】
在n×nn×n方阵里填入1,2,3,…,n×n1,2,3,…,n×n,要求填成蛇形。例如n=4n=4时方阵为:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
其中,n≤20n≤20。
【输入】
输入nn。
【输出】
输出题述方阵。nn行,每行各数之间用一个空格隔开。
【输入样例】
4
【输出样例】
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
【代码】
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cstring>
using namespace std;
#define N 22
int a[N][N];
int main()
{
int n,t=1;
cin >> n;
//对数组做初始化
memset(a,0,sizeof(a));//清空数组
a[0][n-1]=t;
int i=0;
int j=n-1;
while(t<n*n)
{
//从上往下
while(a[i+1][j]==0&&i+1<n)
a[++i][j]=++t;
//从右往左
while(a[i][j-1]==0&&j-1>=0)
a[i][--j]=++t;
//从下往上
while(a[i-1][j]==0&&i-1>=0)
a[--i][j]=++t;
//从左往右
while(a[i][j+1]==0&&j+1<n)
a[i][++j]=++t;
}
//输出
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
return 0;
}
【做题链接】
信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn)http://ybt.ssoier.cn:8088/problem_show.php?pid=2045