- 来来来,题目在这里
- 废话不多说,开始进入正题:
分析
- 可以用数组一个一个填(但是只有50%,100%的开不下)。
- 然后开始找规律:
(哦我终于加了图片)
- 每一圈都是从1开始,再加上之前的;
- 分成四个状态(上下左右);
- 用递归。
代码
#include<bits/stdc++.h>
using namespace std;
int n,x,y,k;
int f(int n,int i,int j) {
if(i==1) return j;//上
if(j==n) return n+i-1;//右
if(i==n) return 3*n-2-j+1;//下
if(j==1) return 4*n-4-i+2;//左
return f(n-2,i-1,j-1)+4*(n-1);//下一层
}
int main()
{
cin>>n>>x>>y;
cout<<f(n,x,y);
return 0;
}
就这我还想了好久。。。。。