螺旋队列

来源:互联网 发布:淘宝级别后面的雷锋侠 编辑:程序博客网 时间:2024/04/29 20:48

 

21 22......
20 7 8 9 10
19 6 1 2 11
18 5 4 3 12
17 16 15 14 13
1点坐标为(0,0),3的坐标为(1,1).编程实现输入任意一点坐标(x,y)输出所对应的数字。x方向向右为正,y向上为正。原题y正方向向上,若是这样,用户输入坐标后,直接把y取负即可。

个人答案:

 

#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int p,m,n,x,y;
cout<<"输入坐标(x,y)"<<endl ;
cin>>x>>y;
n=abs(x)>=abs(y) ? abs(x):abs(y);
n+=1;
m=(2*n-3)*(2*n-3);
if(x==n-1&&x!=y)
p=n-1-y+m;

if(y==1-n&&x!=-y)
p=3*n-3+m-x ;

if(x==1-n&&x!=y)
p=5*n-5+m+y;

if(y==n-1&&y!=-x)
p=7*n-7+m+x;

cout<<endl<<"坐标(x,y)上的数字为:"<<p<<endl;
return 0 ;
}

原创粉丝点击