在n×n方阵里填入1,2,3,…,n×n,要求填成蛇形。例如n=4时方阵为:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
其中,n≤20。
输入:
输入n。
输出:
输出题述方阵。n行,每行各数之间用一个空格隔开。
输入样例:
4
输出样例:
10 11 12 1 9 16 13 2 8 15 14 3 7 6 5 4
答案:
//找规律,一部分一部分的输出
#include<iostream>
using namespace std;
const int N=25;
int a[N][N];
int main()
{
int n;
cin>>n;
int k=1,i=0,j=n; //定义好初始值,k为 1~n 数值,i 一定要从 0 开始
while(k<=n*n)
{
while(a[i+1][j]==0&&i<n) a[++i][j]=k++; //列不变,行递增
while(a[i][j-1]==0&&j>1) a[i][--j]=k++;
while(a[i-1][j]==0&&i>1) a[--i][j]=k++;
while(a[i][j+1]==0&&j<n) a[i][++j]=k++;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}