编写一个算法,告诉我三个中只有两个和两个数字是否相同

Zac*_*ack 2 algorithm math

我遇到了看似简单的算法问题.我试图在3次或更少的操作中完成它,我有理由相信它可以通过数学解决,但我无法弄明白(问题的来源没有答案).

编辑:

(a[0] == a[1] + a[0] == a[2] + a[1] == a[2]) == 1
Run Code Online (Sandbox Code Playgroud)

是我最初的想法,但我想看看是否可以在更少的操作中完成(1比较是一个操作).

ken*_*ytm 7

假设3个数字是a,bc,

(b == c) ? (a != c) : (a == b || a == c)
Run Code Online (Sandbox Code Playgroud)
  • 如果(a,b,c)=(1,1,1),那么我们将调用b == c(true)然后调用a != c(false)并完成.
  • 如果(a,b,c)=(1,1,2),那么我们将调用b == c(false)然后调用a == b(true)并完成.
  • 如果(a,b,c)=(1,2,1),那么我们将调用b == c(false)然后调用a == b(false)和a == c(true)并完成.
  • 如果(a,b,c)=(2,1,1),那么我们将调用b == c(true)然后调用a != c(true)并完成.
  • 如果(a,b,c)=(1,2,3),那么我们将调用b == c(false)然后调用a == b(false)和a == c(false)并完成.

因此,最多进行3次比较.

也有在2个条件分支点?:||,但OP不指望它.