主题:给大家做道题 -- 不锈钢破锣
共:💬8
都知道程序设计里的swap()吧。一般是这么写的:
temp=a;
a=b;
b=temp.
如果不用临时变量,只用a,b这两个变量和算术运算该怎么办呢?再推广到逻辑门运算又该怎么办呢?
这是我最近在写的一篇文章的例子,弟兄们不妨想想看。
复 给大家做道题
题目很有意思,可惜在下愚鲁。谨受教。
复 给大家做道题
临时想的一个解法:
a = a+b; // a: A+B; b:B (a,b: 变量; A,B: 老的值)
b = b-a; // a: A+B; b:-A
a = a+b; // a: B; b:-A
b = -b; // a: B; b: A
复 给大家做道题
a=a+b;
b=a-b;
a=a-b;
复 给大家做道题
复 给大家做道题
a = a XOR b
b = a XOR b
a = a XOR b
a+b不能太大,否则就产生了溢出。最保险的办法是用异或。
我个人认为,这个题目不是微软的题目。至少五年前第一次看到的时候,发表者说是在面试一个小公司的时候,一个老印出的题目。我觉得,这个题目的路数和微软面试人员的思路不一致。