题目:输入一个n输出一个n*n的螺旋方阵
解题思路:先定义一个数组,然后将数组赋值为0,用4个while循环来为数组赋值,定义一个add=1,然后元素通过++add为每个数组便利,当add==n*n时说明已经便利完成,否则继续赋值。
细节处理:利用while循环输入,然后通过数组是否为0,判断是否已经赋值了。
代码:#include<bits/stdc++.h>
using namespace std;
int main()
{
int d;
cin>>d;
while(d--)
{
int add=1,i=0,j=0,n,a[12][12]={1};
cin>>n;
while(add<n*n)
{
while(j+1<n&&a[i][j+1]==0)
a[i][++j]=++add;
while(i+1<n&&a[i+1][j]==0)
a[++i][j]=++add;
while(j-1>=0&&a[i][j-1]==0)
a[i][--j]=++add;
while(i-1>=0&&a[i-1][j]==0)
a[--i][j]=++add;
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{cout<<a[i][j];
if(j==n-1)
cout<<endl;
else
cout<<'\t';
}}
cout<<endl;}
return 0;
}
感想:通过将数组初始化为0,然后判断元素是否为0来判断是否已赋值,这样会更加节省时间。