【题目描述】
在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<bits/stdc++.h>
using namespace std;
int a[101][101];
int main()
{
int n;
cin>>n;
int i=0;
int j=n-1;
int sum=1;
int k=0;
int g=0;
while(sum<=n*n)
{
if(k==0){
while(i<=n-1-g)
{
a[i++][j]=sum;
sum++;
}
i--;
j--;
}
else if(k==1){
while(j>=g){
a[i][j--]=sum++;
}
j++;
i--;
}
else if(k==2)
{
while(i>=g){
a[i--][j]=sum++;
}
i++;
j++;
}
else{
while(j<=n-g-2){
a[i][j++]=sum++;
}
j--;
i++;
}
k++;
if(k>4){
k=0;
g++;
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}