关闭

关于交换两个变量

242人阅读 评论(0) 收藏 举报

int a = 1;

intb = 2;

 方法一:加减法

 a =a + b;

 b =a - b;

 a =a - b;

 方法二:异或操作

a = a ^ b;

b = a ^ b;

a = a ^ b;

方法三:乘除法

a = a * b ;

b = a / b ;

a = a / b ;

总结:
此题的本质就是求一种操作X,要保证X是可逆操作,设其逆操作为Y, 也即,若 p X q = r 成立,那么一定有 r Y q = p 成立
那么首先令
a = a X b;
这样a保存了a和b进行X操作后的结果
然后再
b = a Y b
因为此时a = a X b, 又因为Y是X的逆操作,所以此时 b = a
最后再
a = a Y b
此时a = a X b, 但是 b = a,所以 a = b

纵观上面几种方法,它们的操作都是可逆的
加法 <-> 减法
乘法 <-> 除法
异或 <-> 异或 (异或操作的逆操作是它本身)
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:305516次
    • 积分:2631
    • 等级:
    • 排名:第14352名
    • 原创:62篇
    • 转载:47篇
    • 译文:0篇
    • 评论:25条
    推荐博客
    相关博客
    最新评论