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;

    }

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

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



  • 相关阅读:
    20191324第一周读书笔记
    20191324《信息安全专业导论》第十一周学习总结
    20191324《信息安全专业导论》第九周学习总结
    20191324《信息安全专业导论》第八周学习总结
    20191324《信息安全专业导论》第七周学习总结
    20182317 2018-2019-1《程序设计与数据结构》课程总结
    20182317 2019-2020-1 《数据结构与面向对象程序设计》实验九报告
    学号20182317 2019-2020-1 《数据结构与面向对象程序设计》第十周学习总结
    # 20182317 2019-2020-1 哈夫曼测试
    学号20182317 2019-2020-1 《数据结构与面向对象程序设计》第九周学习总结
  • 原文地址:https://www.cnblogs.com/climberluoxi/p/1357820.html
Copyright © 2011-2022 走看看