冰天雪地跪求,蛇行数组
使一个N*N的二维数组按如下方式排列.例如,4*4的二维数组采用如下排列:
1 2 6 7
3 5 8 13
4 9 12 14
10 11 15 16
如下代码中红色的部分有5个错误,导致结果显示有误.
#include<stdio.h>
void main()
{
int a[100][100]={0},n,i,j,k,l,s,sign;
s=1;sign=1;
scanf("%d",&n);
i=j=0;
for(k=0;k<n;k++)
{
if(sign==1)
{
i=k;j=0;
while(i>=0)
{
a[i][j]=s;
s++;i--;j++;
}
sign=-sign;
}
else
{
j=k;i=0;
while(j>=0)
{
a[i][j]=s;
s++;i++;j--;
}
sign=-sign;
}
}
s=n*n;
sign=-sign;
for(l=n-1;l>0;l--)
{
if(sign==-1)
{
i=l;j=n-1;
while(i>=n-1)
{a[i][j]=s;s--;i++;j--;}
sign=-sign;
}
else
{
i=l;j=n-1;
while(i<=n-1)
{ a[j][i]=s;
s--;i++;j--;}
sign=-sign;
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
哪儿大虾行行好.帮帮小弟偶啊~
[[it] 本帖最后由 十三月的花 于 2008-6-16 08:54 编辑 [/it]]
----------------解决方案--------------------------------------------------------