原题链接
题解
从小正方形到大正方形,有四个变化方向,分别是左上、右上、右下、左上。
分类讨论模拟即可
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;
}