Fenoix的针对
原题链接https://nuoyanli.com/contest/33/problem/K
题目为蛇形数组的一种运用
主要解题思路为寻找数字前进的规律 然后根据规律写出数组
题目下方给出了输出格式,一定要注意
PS:
右1 下1 左1 下1
右2 上顶 右1
下3 左顶 下1
右4 上顶 右1
下5 左顶 下1
由数字前几规律可以看出 但我们把第一行也就是1-4的值直接赋予之后,剩下的部分将会按照规律前进。使用while循环来控制条件,进行一次一次的循环遍历。
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n;
while(~scanf("%d",&n))
{
int i,j,sum=1;
int a[105][105];
a[0][0]=1;//给出1-4
a[0][1]=2;
a[1][1]=3;
a[1][0]=4;
i=2;
j=0;
sum=5;
long long x=3,xx;
while(sum<n*n)
{
xx=x;
while(xx--)//右
{
a[i][j]=sum;
sum++;
j++;
}
j--;
i--;
while(i>=0)//上
{
a[i][j]=sum;
sum++;
i--;
}
i=0;
j++;
x++;
xx=x;
while(xx--)//下
{
a[i][j]=sum;
sum++;
i++;
}
i--;
j--;
while(j>=0)//左
{
a[i][j]=sum;
sum++;
j--;
}
j=0;
i++;
x++;
}
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
printf("%2d ",a[i][j]);
}
printf("\n");
}
printf("\n");
}
return 0;
}