zoukankan      html  css  js  c++  java
  • 不用第三变量交换数值

    最近碰到一个面试题是关于变量替换,a= 2,b=5,替换之后b=2,a=5;当时觉得应该是利用编译器的临时变量来搞定,其实不然,结果就是我没做出来,尤其人家的标题写的“初级”,瞬间觉的自己能力不行啊。

    回来之后才想起来这个是C语言时候交过的:

    1 int a = 2,b=5;
    2     a = b + a;
    3     b = a - b;
    4     a = a - b; 

    是不是很简单呢,郁闷,当时怎么没想到呢,这几天邪门的很啊。

    如果只是上面的那也就不说了,主要是想总结下这种满足交互原则的方法,貌似只要满足交换律似乎就能搞定这个问题啊。

    看下一种:

    1 int a = 2,b=5;
    2     /*a = b + a;
    3     b = a - b;
    4     a = a - b; */
    5     a = a * b;
    6     b = a / b;
    7     a = a / b ;

    也可以实现呢。

    网上貌似也有人这样搞,利用a^b^b == a,异或运算满足交换律,二进制运算的神奇哥哥理解不了:

     1     int a = 2,b=5;
     2     /*a = b + a;
     3     b = a - b;
     4     a = a - b; */
     5     /*a = a * b;
     6     b = a / b;
     7     a = a / b ;*/
     8     a = a ^ b;
     9     b = a ^ b;
    10     a = a ^ b;

    唉,终究是太无知了,难怪等不到录取通知。。。。。。

  • 相关阅读:
    匈牙利算法——S.B.S.
    洛谷P1328 生活大爆炸版石头剪刀布——S.B.S.
    洛谷P1101 单词方阵——S.B.S.
    noip2010提高组3题题解 by rLq
    洛谷P1605 迷宫——S.B.S.
    yii2.0 curd操作
    我常用的linux命令
    常用css
    ln 软链
    crontab下git命令无效
  • 原文地址:https://www.cnblogs.com/WaterGood/p/9090794.html
Copyright © 2011-2022 走看看