自从我使用C#(2年)以来,已经有一段时间了,我正试图找到解决此问题的最有效方法。
问题陈述:
给定三个整数,一个b c,如果有一个则返回True b或c是"关闭" (最多不同于1), 而另一个是"远",不同于另外两个 值为2或更多。注意:abs(num)计算数字的绝对值。
close_far(1,2,10)→真实
close_far(1,2,3)→False
close_far(4,1,3)→True
我正在使用Visual Studio Community 2015。
我刚刚开始,这不是为了学校,而是为了工作。
任何帮助都将不胜感激。
答案 0 :(得分:1)
这会有帮助吗?虽然我相信你一定有这样的事情。
public static bool Foo(int a, int b, int c)
{
var x = Math.Abs(a-b);
var z = Math.Abs(c-a);
var close = x>z?c:b;
var far = x>z?b:c;
return Math.Abs(close-a)<=1
&& Math.Abs(far-a)>=2
&& Math.Abs(far-close)>=2;
}
答案 1 :(得分:1)
我会这样解决:
private static bool closeFar(int a, int b, int c)
{
bool bIsNear = Math.Abs(a - b) <= 1;
bool cIsNear = Math.Abs(a - c) <= 1;
if (!(bIsNear^cIsNear))
{
return false;
}
int far = bIsNear ? c : b;
return Math.Abs(far - a) >= 2 && Math.Abs(c - b) >= 2;
}
因为这是我可以使用XOR运算符的少数几次之一。