zoukankan      html  css  js  c++  java
  • 旋转队列

    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往下为正,比如2(1,0),3(1,1),7(-1,-1).

    写一个函数,输入坐标返回对应的值.

     我是这样干的:

    int foo(int des_x, int des_y)
    {
        
    int x=0,y=0,i,j,cal=1;
        
    if(des_x==0&&des_y==0){
            
    return(1);    
        }
        
    for(i=1;1==1;i++){
            
    for(j=1;j<=i;j++){
                
    if(i&1)x++;
                
    else x--;            
                cal
    ++;
                
    if(x==des_x&&y==des_y){
                    
    return(cal);
                }
            }        
            
    for(j=1;j<=i;j++){
                
    if(i&1)y++;
                
    else y--;
                cal
    ++;
                
    if(x==des_x&&y==des_y){
                    
    return(cal);
                }            
            }        
            
        }

    }

    别人是这样干的

    #define max(a,b) (((a)<(b))?(b):(a))
    #define abs(a) ((a)>0)?(a):(-(a))
    int foo(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;

    }

    虽然都完成了功能,但是明显别人的代码要聪明一些,这种聪明是要积累的。我自己的代码在坐标比较大的时候运算肯定很慢的,

    别人的就不会。我暂时还没想通他是怎样一个思路把这个算法想出来的。



  • 相关阅读:
    支持向量机(SVM)
    MapReduce(二) MR的高级特性-序列化、排序、分区、合并
    HDFS(二) 底层通信原理——RPC 及 动态代理
    HDFS(一) 高级特性
    UML类图中最重要的几种类关系及其表示
    不同.c文件中声明的全局变量的使用理解
    全局变量和局部变量
    转载 永远不要在.h文件中定义变量!
    LabVIEW介绍
    C语言程序注释风格
  • 原文地址:https://www.cnblogs.com/climberluoxi/p/1357820.html
Copyright © 2011-2022 走看看