Computer >> Máy Tính >  >> Lập trình >> C ++

Có thể tạo hình tam giác từ các giá trị mảng trong C ++

Trong bài toán này, chúng ta được cung cấp một mảng các số nguyên. Nhiệm vụ của chúng ta là kiểm tra xem việc tạo ra một tam giác không suy biến có lấy các phần tử của mảng là các cạnh của tam giác hay không.

Tam giác không suy biến - nó là một tam giác có một diện tích dương. Điều kiện để tam giác không suy biến với các cạnh a, b, c là -

a + b > c
a + c > b
b + c > a

Hãy lấy một ví dụ để hiểu rõ vấn đề hơn -

Đầu vào - arr [2, 5, 9, 4, 3]

Đầu ra - Có

Giải thích - tam giác được tạo thành là 2 3 4.

Để giải quyết vấn đề này, chúng tôi sẽ kiểm tra xem điều kiện trên có được thỏa mãn bởi các giá trị của mảng hay không.

Giải pháp điều hướng sẽ liên quan đến việc kiểm tra trực tiếp mọi bộ ba của mảng.

Một giải pháp hiệu quả hơn sẽ liên quan đến việc sắp xếp các phần tử của mảng và kiểm tra ba bộ ba liên tiếp của mảng. Đối với mảng đã sắp xếp nếu tổng của hai phần tử không lớn hơn giá trị tiếp theo thì kiểm tra giá trị sau đó không xứng đáng (chúng đã lớn).

Ví dụ

Chương trình cho thấy việc triển khai giải pháp của chúng tôi

#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;
}

Đầu ra

Creation of triangle from elements of array is Possible