找到三角形的最小允许第三面

时间:2017-02-18 12:53:22

标签: c++ arrays geometry

我有一个整数数组A,表示三角形边长。如果从阵列中取出任何两个边作为另外两个边,我需要找到第三个可能的最小长度。

现在我知道,如果第三方为c,而另外两方为ab(a>b)最小可能方为c>a-bc=a-b+1。< / p>

我对数组进行了排序并采取了连续的差异来找到可能的一面。但是我得错了答案。我的代码如下:

int n;
cin>>n; // stores length of sides of triangle
int a[n];        
sort(a,a+n);
   unsigned long long int min2 = numeric_limits<double>::infinity();  
   for(long long i=0;i<n-1;i++)
   {
      if ((a[i+1] - a[i] +1 ) <= min2)
        min2 = a[i+1] - a[i] +1;
   }

cout<<min2;

例如 - A = [2 2 2]所以最小的三分之一将是1.根据我的说法是正确的,但对我不知道的测试用例失败。

我在哪里做错了?我认为错误发生在if条件中的+1。但我无法弄清楚。

1 个答案:

答案 0 :(得分:0)

定理:三角形任意两边的长度之和大于第三边的长度。

  

如果你选择8和13有两个边,那么第三边的最小长度是6,最大值是b 20