Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 배열 값으로 삼각형을 형성할 수 있음

<시간/>

이 문제에서는 정수 배열이 제공됩니다. 우리의 임무는 배열의 요소를 삼각형의 측면으로 사용하여 비축퇴 삼각형이 생성되었는지 확인하는 것입니다.

비퇴화 삼각형 - 양의 면적을 갖는 삼각형입니다. 변이 a, b, c인 비축퇴 삼각형의 조건은 -

입니다.
a + b > c
a + c > b
b + c > a

문제를 더 잘 이해하기 위해 예를 들어 보겠습니다 -

입력 - arr[2, 5, 9, 4, 3]

출력 − 예

설명 - 형성된 삼각형은 2 3 4입니다.

이 문제를 해결하기 위해 배열의 값이 위의 조건을 만족하는지 확인합니다.

네이비 솔루션에는 어레이의 모든 3중항을 직접 확인하는 작업이 포함됩니다.

더 효과적인 솔루션은 배열 요소를 정렬하고 배열의 세 연속 삼중항을 확인하는 것입니다. 정렬된 배열의 경우 두 요소의 합이 다음 값보다 크지 않으면 그 다음 값은 가치가 없습니다(이미 큼).

솔루션 구현을 보여주는 프로그램

#include <bits/stdc++.h>
using namespace std;
bool isTrianglePossible(int arr[], int N){
   if (N < 3)
      return false;
   sort(arr, arr + N);
   for (int i = 0; i < N - 2; i++)
      if (arr[i] + arr[i + 1] > arr[i + 2])
         return true;
}
int main() {
   int arr[] = {5, 12, 13, 65, 6, 1};
   int N = sizeof(arr) / sizeof(int);
   cout<<"Creation of triangle from elements of array ";
   isTrianglePossible(arr, N)?cout<<"is Possible": cout<<"is not Possible";
   return 0;
}

출력

Creation of triangle from elements of array is Possible