题解
从小正方形到大正方形,有四个变化方向,分别是左上、右上、右下、左上。
分类讨论模拟即可
code
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,x,y;
cin>>n>>x>>y;
puts("Yes");
int flag=1;
if(x==1)
{
if(y==1) flag=3;
else flag=4;
}
else if(y==1)
{
flag=2;
}
for(int i=2;i<=n;i++)
{
if(flag==1)
{
x--;y--;
printf("%d %d %d %d\n%d %d %d %d\n",i,x,y,1,i-1,x+1,y,0);
if(x==1)
{
if(y>1) flag=4;
else flag=3;
}
else if(y==1)
{
if(x>1) flag=2;
else flag=3;
}
}
else if(flag==2)
{
x--;
printf("%d %d %d %d\n%d %d %d %d\n",i,x,y,1,i-1,x+1,y+i-1,0);
if(x==1)
{
if(y>1) flag=4;
else flag=3;
}
else if(y+i-1==n)
{
if(x==1) flag=4;
else flag=1;
}
}
else if(flag==3)
{
printf("%d %d %d %d\n%d %d %d %d\n",i,x+i-1,y,1,i-1,x,y+i-1,0);
if(x+i-1==n)
{
if(y>1) flag=1;
else flag=2;
}
else if(y+i-1==n)
{
if(x==1) flag=4;
else flag=1;
}
}
else if(flag==4)
{
y--;
printf("%d %d %d %d\n%d %d %d %d\n",i,x,y,0,i-1,x+i-1,y+1,1);
if(x+i-1==n)
{
if(y>1) flag=1;
else flag=2;
}
else if(y==1)
{
if(x>1) flag=2;
else flag=3;
}
}
}
return 0;
}
标签:int,n%,else,--,flag,printf,俄罗斯,方块
From: https://www.cnblogs.com/pure4knowledge/p/18191923