第一眼看到%50的数据范围小,于是我们便可以打暴力
#include<iostream>
using namespace std;
int q[3030][3030];
int main()
{
int n;
cin>>n;
int oo,ooo;
cin>>oo>>ooo;
int x=0,y=0;
int i,j;
int d=0;
int dx[]={0,1,0,-1},dy[]={1,0,-1,0};
for(int k=1;k<=n*n;k++)
{
q[x][y]=k;
i=x+dx[d];
j=y+dy[d];
if(i<0||i>=n||j<0||j>=n||q[i][j])
{
d=(d+1)%4;
i=x+dx[d];
j=y+dy[d];
}
x=i;
y=j;
}
cout<<q[oo-1][ooo-1];
}
那这毕竟是一个题解,不能拘泥于得部分分
于是我们便开始探索正解
我们发现这一个矩阵是一圈一圈的,每一圈都可以看成一个单独的部分
又发现只有在矩阵最外围的一圈的数好求
于是我们便可以将原来的坐标