您的位置:首页 > 其它

“之字形”方阵

2015-09-21 15:09 330 查看
1、          给定一个正整数n,输出如下 n ´ n
“之字形”方阵。如下:

  1    2    6    7   15   16   28   29

  3    5    8   14   17   27   30   43

  4    9   13   18   26   31   42   44

 10   12   19   25   32   41   45   54

 11   20   24   33   40   46   53   55

 21   23   34   39   47   52   56   61

 22   35   38   48   51   57   60   62

 36   37   49   50   58   59   63   64

代码:

#include<iostream>

using namespace std;

void main()
{
int n,i,j,m,k;
int a[100][100]={0};
cout<<"please input n:";
cin>>n;
k=0; //标记
i=0,j=0;
m=1;
a[0][0]=m;
while(m<n*n)
{
switch(k)
{
case 0: //向右或向下
if(i+j<n-1)
{
j++;
m++;
a[i][j]=m;
k=(k+1)%4;
}
else
{
i++;
m++;
a[i][j]=m;
k=(k+1)%4;
}
break;
case 1: //向左下
while(i+1<n&&j-1>=0)
{
i++,j--;
m++;
a[i][j]=m;
}
k=(k+1)%4;
break;
case 2: //向下或向右
if(i+j<n-1)
{
i++;
m++;
a[i][j]=m;
k=(k+1)%4;
}
else
{
j++;
m++;
a[i][j]=m;
k=(k+1)%4;
}
break;
case 3: //向右上
while(i-1>=0&&j+1<n)
{
i--,j++;
m++;
a[i][j]=m;
}
k=(k+1)%4;
break;
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%5d",a[i][j]);
}
cout<<endl;
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: