第一眼看到%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];
}
那这毕竟是一个题解,不能拘泥于得部分分
于是我们便开始探索正解
我们发现这一个矩阵是一圈一圈的,每一圈都可以看成一个单独的部分
又发现只有在矩阵最外围的一圈的数好求
于是我们便可以将原来的坐标 转换成在这个矩阵里某一圈 即 将

博客介绍了如何解决NOIP 2014年竞赛中关于螺旋矩阵的问题。作者首先提到暴力求解部分分数的方法,然后探讨了正解的思路。关键在于理解矩阵一圈一圈的特性,通过坐标转换找到每圈的位置,并用递归确定在哪一圈。文章还解释了如何计算特定位置的数值,涉及矩阵边长和每一圈的数值规律。
最低0.47元/天 解锁文章
959

被折叠的 条评论
为什么被折叠?



