一下是一个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 |
void show(int R[][5],int n)
{
int k=1;
int i,j,l,t,s,q,m;
if(n%2==0)
int m=n/2;
else
m=n/2+1;
for(i=0;i<m;i++)
{
for(j=i;j<n-i;j++)
R[i][j]=k++;
for(t=i+1,j=j-1;t<n-i;t++)
R[t][j]=k++;
for(l=n-i-1,t=t-2;t>=i;t--)
R[l][t]=k++;
for(s=i,q=l-1;q>i;q--)
R[q][s]=k++;
}
}
int main()
{
int i,j;
int n=5;
int R[5][5]={0};
show(R,5);
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
cout<<R[i][j]<<" ";
}
cout<<endl;
}
}
这样子才能实现,不过很奇怪,为什么当我把函数show 里边的形参改成了R[][],时候,就会报错呢?
error C2664: 'show' : cannot convert parameter 1 from 'int [5][5]' to 'int [][1]'
很奇怪!可能我对二维数组了解还不够吧!