您的位置:首页 > 编程语言 > C语言/C++

C/C++实现螺旋方阵算法

2014-09-19 09:58 387 查看


记录自己写的题,共同进步,大神请无视
Description

下面是一个5*5螺旋方阵。你的任务是输出按逆时针方向旋进的n*n螺旋方阵。

1 2 3 4 5

16 17 18 19 6

15 24 25 20 7

14 23 22 21 8

13 12 11 10 9


Input

输入有多行,每行有1个整数n,(1<=n<=100)。


Output

对输入文件中的每个整数n,按n行n列的方式输出n*n螺旋方阵,行尾无空格,同一行上两个数之间空一格。两个螺旋方阵之间空一行。

<pre name="code" class="cpp">#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int main ()
{
int n;
int a[100][100];
int x,y,tot=0;

while(scanf("%d",&n)==1)
{
memset(a,0,sizeof(a));
tot=a[x=0][y=0]=1;
while(tot<n*n)
{
while(y+1<n&&!a[y+1][x])
{
a[++y][x]=++tot;
}
while(x+1<n&&!a[y][x+1])
{
a[y][++x]=++tot;
}
while(y-1>=0&&!a[y-1][x])
{
a[--y][x]=++tot;
}
while(x-1>=0&&!a[y][x-1])
{
a[y][--x]=++tot;
}
}
for(y=0;y<n;y++)
{
for(x=0;x<n-1;x++)
{
printf("%d ",a[y][x]);
}
printf("%d\n",a[y][n-1]);
}
printf("\n");
}

}


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ c