我有一個整數A
的數組,表示三角形的邊長。我需要找到第三種可能的最小長度,如果從陣列中取出任何兩側作爲另外兩側。尋找最小允許的三角形的第三面
現在我知道,如果第三側是c
和其他雙方是a
和b(a>b)
最低側可能被c>a-b
或c=a-b+1
。
我對數組進行了排序,並採取了連續的差異來找到可能的一側。但是我得到錯誤的答案。我的代碼如下:
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
。但我無法弄清楚。
請提供[MCVE],並告訴我們的輸入和輸出是連同預期的產出。 – user463035818
@ tobi303這就是問題所在。我不知道哪裏出了問題,因爲我也不知道輸入和預期輸出。 – sammy
呵呵?輸入來自哪裏?如果你不知道答案,那麼你的方法是錯誤的。只有當你知道如何在紙上解決它時,你應該先拿筆和紙或做一些[閱讀](https://en.wikipedia.org/wiki/Triangle),開始編寫代碼是有意義的。 – user463035818