为什么这样没有输出结果?不知道哪里错了
题目描述n×n的蛇形方阵当n=5时如下的形式
1 3 4 10 11
2 5 9 12 19
6 8 13 18 20
7 14 17 21 24
15 16 22 23 25
请给出一个程序,对于任意的输入n(0<n<21),输出按照上面规律所获得的n×n的蛇形方阵。
输入
输入为一个整数n (0<n<21),代表要生成的蛇形方阵大小为n*n;
输出
输出n×n方阵(一个方阵的同一行数据之间以'\t'分隔)
示例输入
4
示例输出
1 3 4 10
2 5 9 11
6 8 12 15
7 13 14 16
将螺旋方阵存放到N*N的二维数据中并打印输出。
我写的程序:
#include <iostream.h>
void main()
{
int a[5][5],n=5;
int k=1,i=0,j=0,flag=1;
for(k;k<=n*n;k++)
{
a[i][j]=k;
if(flag==1)//dowm
{
i++;j--;
if(j<0||i>n-1)
{
flag=-flag;
if(j<0)
j++;
else
{
j=j+2;
i--;
}
}
else //up
{
i--;j++;
if(i<0||j>n-1)
{
flag=-flag;
if(i<0)
i++;
else
{
i=i+2;
j--;
}
}
}
}
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}