⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 luoxuan.cpp

📁 显示螺旋队列
💻 CPP
字号:
//螺旋队列.cpp
// 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),X方向向右为正,y方向向下为正。例如,7的坐标为
//(-1,-1),2的坐标为(0,1),3的坐标为(1,1)。编程实现输入任意一点坐标(x,y),输出所对应得
//数字。[芬兰某著名通信设备公司2005年面试题]
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
#define max(a,b) abs(a)<abs(b) ? abs(b): abs(a);
int foo(int x,int y)
{
    int t=max(x,y);
    int u=t*2;       
    int v=u-1;
    v=v*v+u;
    if(x==-t)        //与顺序无关t=1时 左侧 5 6 7
        v+=u+t-y;
    else if(y==-t)   //                上侧 7 8 9 (-1,-1) 时有7
        v+=3*u+x-t; 
    else if(y==t)    //                下侧 3 4 5 (-1,1)  时有5
        v+=t-x;
    else             //                右侧 2 3   (1,1)   时有3
        v+=y-t;
    return v;
}
void main()
{
    int n=4;
    for(int y=-n;y<=n;y++)
    {
        for(int x=-n;x<=n;x++)
            cout<<setw(4)<<foo(x,y);
        cout<<endl;
    }
}
             

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -