比如如下一个函数:bool func(int minimumValue1, int maximumValue1, int minimumValue2, int maxmumValue2)
{
 
}
1:
func(2,5, 3,6);
返回 true, 有数值重叠2: func(2, 8, 9, 20);
返回 false,无重叠3: func(5, 10, 2,5);
返回true,有重叠4: func(6, 8, 1, 7);
返回 true,有重叠
我自己写了一个,就是简单的把各种情况进行比较,觉得代码太啰嗦了,各位有没有简洁一点的代码?

解决方案 »

  1.   

    比较边值就可以了bool func(int minimumValue1, int maximumValue1, int minimumValue2, int maxmumValue2) 
    {
    ASSERT(minimumValue1 <= maximumValue1 && minimumValue2 <= maxmumValue2);
    if (maximumValue1 >= minimumValue2 && minimumValue1 >= maxmumValue2)
    return true
    return false;

      

  2.   

    (min1 <= min2) && (max1 >= min2)
    ||
    (min1 >= min2) && (min1 <= max2)
      

  3.   

    return minimumValue1 <= maxmumValue2 && maximumValue1 >= minimumValue2;
      

  4.   

    ASSERT(min1 <= max1 && min2 <= max2); 
    return (min1 <= max2) && (max1 >= min2);
      

  5.   

    随便写了,不知道你嫌不嫌啰嗦
    bool func(int minmumValue1, int maxmumValue1, int minmumValue2, int maxmumValue2) 

    if (minmumValue1 > maxmumValue1 || minmumValue2 > maxmumValue2)
    {
    return false;
    }

    bool bResult = false;
    if (minmumValue1 == minmumValue2)
    {
    bResult = true;
    }
    else if (minmumValue1 < minmumValue2)
    {
    if (maxmumValue1 >= minmumValue2)
    {
    bResult = true;
    }
    }
    else
    {
    if (maxmumValue2 >= minmumValue1)
    {
    bResult = true;
    }
    }
    return bResult;
      

  6.   

    LS的,搞个 bResult 出来根本没啥用处么…… 直接return 不容易出问题
      

  7.   

    如果前面的两个数中的一个在后面两个数之间或后面两个数中的一个在前面两个数之间,true,否则,false
      

  8.   

    不复杂啊
    bool func(int min1, int max1, int min2, int max2)
    {
    if(min1 > max2 || min2 > max1)
    return false;
    else
    return true;
    }
      

  9.   


    bool func(int minimumValue1, int maximumValue1, int minimumValue2, int maximumValue2)
    {
    if (minimumValue1<=0 || minimumValue1>=65535)
    {
    return false;
    } if (minimumValue2<=0 || minimumValue2>=65535)
    {
    return false;
    }
    if (maximumValue2>minimumValue1 && maximumValue2<maximumValue1)
    {
    return false;
    } if (minimumValue2>minimumValue1 && minimumValue2<maximumValue1)
    {
    return false;
    }
    if (maximumValue1>minimumValue2 && maximumValue1<maximumValue2)
    {
    return false;
    } if (minimumValue1>minimumValue2 && minimumValue1<maximumValue2)
    {
    return false;
    } if (maximumValue2==maximumValue1 || maximumValue2==maximumValue1)
    {
    return false;
    } if (minimumValue2==maximumValue1 || minimumValue2==maximumValue1)
    {
    return false;
    } return true;}
      

  10.   

    最后那几句有点错误,应该是:    if (maximumValue2==maximumValue1 || maximumValue2==minimumValue1)
        {
            return false;
        }    if (minimumValue2==maximumValue1 || minimumValue2==minimumValue1)
        {
            return false;
        }