2979. ZigZag

Nother

include

using namespace std;
vector> bg(int a)
{
vector> ans;
vector now;
for (int i=0;i>T;
for (int I=0;I>N;
cout<<”case #”<> bgn=bg(N);
int x=0,y=0,len=1,flag=0,num=1; //flag 控制行走方向,0为右,1为左,2为上,3为下
while (x!=N && y!=N)//len控制当前边长,num为当前填的数
{
bgn[x][y]=num;
num++;
if (flag==0)
{
x++;
if (x==len && y==0)
{
flag=3;
}
if (x==len && y!=0)
{
flag=2;
}
}
else
{
if (flag==3)
{
y++;
if (y==len && x==len)
{
flag=1;
}
if (x==0)
{
flag=0;
len++;
}
}
else
{
if (flag==1)
{
x–;
if (x==0)
{
flag=3;
}
}
else
{
if (flag==2)
{
y–;
if (y==0)
{
flag=0;
len++;
}
}
}
}
}
}
for (int i=0;i<bgn.size();i++)
{
for (int j=0;j<bgn.size();j++)
cout<<bgn[j][i]<<” “;
cout<<endl;
}
}
return 0;
}
找到普遍规律,改变方向

Li Dao

题解
类似于eoj 2983
蛇形图案

Li Dao

题解

include

using namespace std;
int T,n,now;
int tu[100][100];
void paint(int aa)
{
if(aa%2==0)
{
for(int i=1;i<=aa;i++) tu[i][aa]=now++;
for(int j=aa-1;j>=1;j–) tu[aa][j]=now++;
}
else
{
for(int j=1;j<=aa;j++) tu[aa][j]=now++;
for(int i=aa-1;i>=1;i–) tu[i][aa]=now++;
}
return;
}
int main()
{
cin>>T;
for(int step=0;step>n;
now=1;
for(int i=1;i<=n;i++) paint(i);
printf(“case #%d:\n”,step);
for(int i=1;i<=n;i++)
{
int ff=1;
for(int j=1;j<=n;j++)
{
if(ff) ff=0;else cout<<’ ‘;
cout<<tu[i][j];
}
cout<<endl;
}
}
return 0;
}

直接模拟,和螺旋矩阵差不多

你当前正在回复 博客/题目
存在问题!