淘客熙熙

主题:给大家做道题 -- 不锈钢破锣

共:💬8 新:
全看树展主题 · 分页首页 上页
/ 1
下页 末页
家园 给大家做道题

都知道程序设计里的swap()吧。一般是这么写的:

temp=a;

a=b;

b=temp.

如果不用临时变量,只用a,b这两个变量和算术运算该怎么办呢?再推广到逻辑门运算又该怎么办呢?

这是我最近在写的一篇文章的例子,弟兄们不妨想想看。

家园 都啥时候了你还敢出题考我们,赶快把答案交出来

题目很有意思,可惜在下愚鲁。谨受教。

家园 据说Microsoft面试用过这题.

临时想的一个解法:

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

家园 这不是大二就可以做的题吗?微软也考?
家园 answer

a=a+b;

b=a-b;

a=a-b;

家园 Here is my answer!!!

链接出处

家园 xor

a = a XOR b

b = a XOR b

a = a XOR b

家园 你的方法中有个限制

a+b不能太大,否则就产生了溢出。最保险的办法是用异或。

我个人认为,这个题目不是微软的题目。至少五年前第一次看到的时候,发表者说是在面试一个小公司的时候,一个老印出的题目。我觉得,这个题目的路数和微软面试人员的思路不一致。

全看树展主题 · 分页首页 上页
/ 1
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河