Problem Description
在n*n方陈里填入1,2,...,n*n,要求填成蛇形。例如n=4时方阵为:
1 2 6 7
3 5 8 13
4 9 12 14
10 11 15 16
1 2 6 7
3 5 8 13
4 9 12 14
10 11 15 16
Input
直接输入方阵的维数,即n的值。(n<=100)
Output
输出结果是蛇形方阵。
Sample Input
3
Sample Output
1 2 6 3 5 7 4 8 9
#include<cstdio>
#include<iostream>
using namespace std;
int num[106][106];
int n;
int flag;
void hehe()
{
for(int k=1;k<=n;k++)
{
printf("%d",num[k][1]);
for(int o=2;o<=n;o++)
printf(" %d",num[k][o]);
printf("\n");
}
}
int main()
{
int i;
while(cin>>n)
{
int x=1,y=1;
num[1][1]=1;
for(i=2;i<=(n*n-n+2)/2+n-1;i++)
{
if(x==1)
{
y++;
num[x][y]=i;
i++;
y--;
x++;
num[x][y]=i;
flag=1;
continue;
}
if(y==1)
{
x++;
num[x][y]=i;
i++;
y++;
x--;
num[x][y]=i;
flag=0;
continue;
}
if(flag==1)
{
y--;
x++;
num[x][y]=i;
}
else
{
y++;
x--;
num[x][y]=i;
}
}
for(i=i;i<=n*n;i++)
{
if(x==n)
{
y++;
num[x][y]=i;
i++;
y++;
x--;
num[x][y]=i;
flag=1;
continue;
}
if(y==n)
{
x++;
num[x][y]=i;
i++;
y--;
x++;
num[x][y]=i;
flag=0;
continue;
}
if(flag==0)
{
y--;
x++;
num[x][y]=i;
}
else
{
y++;
x--;
num[x][y]=i;
}
}
hehe();
}
return 0;
}