实现螺旋队列,并且输入任意坐标时输出对应的值
c++代码
#include <iostream> #include<iomanip> #define max(a,b) ((a>b)?a:b) #define abs(a) ((a>0)?a:(-a)) using namespace std; int fun(int x,int y) { int t=max(abs(x),abs(y)); int u=t+t; int v=u-1; v=v*v+u; if(x==-t) v+=u+t-y; else if(y==-t) v+=3*u+x-t; else if(y==t) v+=t-x; else v+=y-t; return v; } int main() { int x,y;//x,y为坐标 for(y=-4;y<=4;y++) { for(x=-4;x<=4;x++) cout<<setw(3)<<fun(x,y);//setw(n)设置n个域宽 cout<<endl; } while(1) { cout<<endl<<"请输入x,y的值,输入10000时结束程序"<<endl; cin>>x; if(x==10000) break; cin>>y; cout<<fun(x,y); } return 0; } 运行结果
