5*5的螺旋方阵

来源:互联网 发布:可以对话的人工智能app 编辑:程序博客网 时间:2024/04/27 20:58

读入一个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


#include <iostream>#define MaxLen 10using namespace std;void fun(int a[MaxLen][MaxLen],int n){   int k=0,m;   if(n%2==0)   m=n/2;   else    m=n/2+1;   for(int i=0;i<m;i++)   {       for(int j=i;j<n-i;j++) //产生该圈上横行的数字       {           k++;           a[i][j]=k;        }        for(int j=i+1;j<n-i;j++)//产生该圈右竖列的数字        {            k++;            a[j][n-i-1]=k;        }        for(int j=n-2-i;j>=i;j--)//产生该圈下横行的数字        {            k++;            a[n-1-i][j]=k;        }        for(int j=n-i-2;j>=i+1;j--)//产生该圈左竖列的数字        {            k++;            a[j][i]=k;        }   }}int main(){    int n,i,j;    int a[MaxLen][MaxLen];    printf("\n");    scanf("%d",&n);    fun(a,n);    printf("%d阶数字方阵如下:\n",n);    for(i=0;i<n;i++)     {          for(j=0;j<n;j++)              printf("%4d",a[i][j]);          printf("\n");      }    printf("\n");    return 0;}


0 0
原创粉丝点击