当前位置: 代码迷 >> C语言 >> [讨论]螺旋矩阵
  详细解决方案

[讨论]螺旋矩阵

热度:372   发布时间:2006-02-26 07:09:00.0
[讨论]螺旋矩阵
我自编的程序,请大家帮我改进一下
#define MAX 5
void aa(int a[MAX][MAX]);
main()
{
int i,j;
int b[MAX][MAX]={0};
for(i=0;i<MAX;i++)
{
for(j=0;j<MAX;j++)
printf("%3d",b[i][j]);
printf("\n");
}
b[0][0]=1;
aa(b);
for(i=0;i<MAX;i++)
{
for(j=0;j<MAX;j++)
{
printf("%3d",b[i][j]);
}
printf("\n");
}
getch();
}
void aa(int a[MAX][MAX])
{
int i=0,j=1,k=1,sign=1;
while(k<MAX*MAX)
{
k++;
a[i][j]=k;
switch(sign)
{
case 1:
if(a[i][j+1]==0&&j<MAX-1)
j++;
else
{
i++;
sign++;
}
break;
case 2:
if(a[i+1][j]==0&&i<MAX-1)
i++;
else
{
j--;
sign++;
}
break;
case 3:
if(a[i][j-1]==0&&j>0)
j--;
else
{
i--;
sign++;
}
break;
case 4:
if(a[i-1][j]==0&&i>0)
i--;
else
{
j++;
sign=1;
}
break;
}
}
}
搜索更多相关的解决方案: 螺旋  矩阵  

----------------解决方案--------------------------------------------------------
答案对的的嘛!
----------------解决方案--------------------------------------------------------
#define MAX 5
void aa(int a[MAX][MAX]);
main()
{
int i,j;
int b[MAX][MAX]={0};
for(i=0;i<MAX;i++)
{
for(j=0;j<MAX;j++) -----这里没有必要吧
printf("%3d",b[i][j]);
printf("\n");
}
b[0][0]=1;
aa(b);
for(i=0;i<MAX;i++)
{
for(j=0;j<MAX;j++)
{
printf("%3d",b[i][j]);
}
printf("\n");
}
getch();
}
void aa(int a[MAX][MAX])
{
int i=0,j=1,k=1,sign=1;
while(k<MAX*MAX)
{
k++;
a[i][j]=k;
switch(sign)
{
case 1:
if(a[i][j+1]==0&&j<MAX-1)
j++;
else
{
i++;
sign++;
}
break;
case 2:
if(a[i+1][j]==0&&i<MAX-1)
i++;
else
{
j--;
sign++;
}
break;
case 3:
if(a[i][j-1]==0&&j>0)
j--;
else
{
i--;
sign++;
}
break;
case 4:
if(a[i-1][j]==0&&i>0)
i--;
else
{
j++;
sign=1;
}
break;
}
}
}
----------------解决方案--------------------------------------------------------

确实没有必要。闭着眼睛都知道输出的都是000


----------------解决方案--------------------------------------------------------
  相关解决方案