私は、三角形の辺の長さを表す整数の配列A
を持っています。任意の2辺が他の2辺と同じように配列から取られている場合、3番目の最小長さを見つける必要があります。三角形の最小許容三角形を見つける
今は第三の側面は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]ので、最低3分の1は1になります。それは私に応じて正しいですが、私には未知のテストケースに失敗しました。
どこが間違っていますか?私は間違いがif条件で+1
にあると思う。しかし、私はそれを理解することはできません。
からBになります期待される出力。 – user463035818
@ tobi303それは問題です。私はそれが間違っているか分からない。なぜならどちらも入力と予想される出力を知らないからです。 – sammy
?入力はどこから来ますか?あなたが答えを知らないなら、あなたのアプローチは間違っています。あなたは紙でそれを解決する方法を知っているときに初めて、ペンと紙を取るか、いくつかの[読書](https://en.wikipedia.org/wiki/Triangle)をしなければなりません。 – user463035818