Check if it is possible to create a polygon with given n sides - GeeksforGeeks

30 Apr, 2021
Given an array arr[] that contains the lengths of n sides that may or may not form a polygon. The task is to determine whether it is possible to form a polygon with all the given sides. Print Yes if possible else print No.Examples:  
Input: arr[] = {2, 3, 4} Output: YesInput: arr[] = {3, 4, 9, 2} Output: No  
 
Approach: In order to create a polygon with given n sides, there is a certain property that must be satisfied by the sides of the polygon.  
Property: The length of the every given side must be less than the sum of the other remaining sides.
 Find the largest side among the given sides. Then, check whether it is smaller than the sum of the other sides or not. If it is smaller then print Yes else print No.Below is the implementation of the above approach: 
C++
Java
Python
C#
PHP
Javascript
// C++ implementation of the approach#include <bits/stdc++.h>using namespace std; // Function that returns true if it is possible// to form a polygon with the given sidesbool isPossible(int a[], int n){     // Sum stores the sum of all the sides    // and maxS stores the length of    // the largest side    int sum = 0, maxS = 0;    for (int i = 0; i < n; i++) {        sum += a[i];        maxS = max(a[i], maxS);    }     // If the length of the largest side    // is less than the sum of the    // other remaining sides    if ((sum - maxS) > maxS)        return true;     return false;} // Driver codeint main(){    int a[] = { 2, 3, 4 };    int n = sizeof(a) / sizeof(a[0]);     if (isPossible(a, n))        cout << "Yes";    else        cout << "No";     return 0;}
// Java implementation of the approachclass GFG {     // Function that returns true if it is possible    // to form a polygon with the given sides    static boolean isPossible(int a[], int n)    {        // Sum stores the sum of all the sides        // and maxS stores the length of        // the largest side        int sum = 0, maxS = 0;        for (int i = 0; i < n; i++) {            sum += a[i];            maxS = Math.max(a[i], maxS);        }         // If the length of the largest side        // is less than the sum of the        // other remaining sides        if ((sum - maxS) > maxS)            return true;         return false;    }     // Driver code    public static void main(String[] args)    {        int a[] = { 2, 3, 4 };        int n = a.length;         if (isPossible(a, n))            System.out.print("Yes");        else            System.out.print("No");    }}
# Python 3 implementation of the approach # Function to check whether# it is possible to create a# polygon with given sides lengthdef isPossible(a, n):    # Sum stores the sum of all the sides    # and maxS stores the length of    # the largest side    sum = 0    maxS = 0    for i in range(n):        sum += a[i]        maxS = max(a[i], maxS)     # If the length of the largest side    # is less than the sum of the    # other remaining sides    if ((sum - maxS) > maxS):        return True         return False # Driver codea =[2, 3, 4]n = len(a) if(isPossible(a, n)):    print("Yes")else:    print("No")
// C# implementation of the approachusing System;class GFG {     // Function that returns true if it is possible    // to form a polygon with the given sides    static bool isPossible(int[] a, int n)    {        // Sum stores the sum of all the sides        // and maxS stores the length of        // the largest side        int sum = 0, maxS = 0;        for (int i = 0; i < n; i++) {            sum += a[i];            maxS = Math.Max(a[i], maxS);        }         // If the length of the largest side        // is less than the sum of the        // other remaining sides        if ((sum - maxS) > maxS)            return true;         return false;    }     // Driver code    static void Main()    {        int[] a = { 2, 3, 4 };        int n = a.Length;         if (isPossible(a, n))            Console.Write("Yes");        else            Console.Write("No");    }}
<?php// PHP implementation of the approach // Function that returns true if it is possible// to form a polygon with the given sidesfunction isPossible($a, $n){    // Sum stores the sum of all the sides    // and maxS stores the length of    // the largest side    $sum = 0;    $maxS = 0;    for ($i = 0; $i < $n; $i++) {        $sum += $a[$i];        $maxS = max($a[$i], $maxS);    }     // If the length of the largest side    // is less than the sum of the    // other remaining sides    if (($sum - $maxS) > $maxS)        return true;         return false;} // Driver code$a = array(2, 3, 4);$n = count($a); if(isPossible($a, $n))    echo "Yes";else    echo "No";?>
<script> // Javascript implementation of the approach  // Function that returns true if it is possible// to form a polygon with the given sidesfunction isPossible( a, n){     // Sum stores the sum of all the sides    // and maxS stores the length of    // the largest side    let sum = 0, maxS = 0;    for (let i = 0; i < n; i++) {        sum += a[i];        maxS = Math.max(a[i], maxS);    }     // If the length of the largest side    // is less than the sum of the    // other remaining sides    if ((sum - maxS) > maxS)        return true;     return false;}     // Driver Code         let a = [ 2, 3, 4 ];    let n = a.length;     if (isPossible(a, n))        document.write("Yes");    else        document.write("No");          </script>
Yes
 
jana_sayantan
math
school-programming
Geometric
Mathematical
School Programming
Mathematical
Geometric
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Program for distance between two points on earth
Convex Hull | Set 1 (Jarvis's Algorithm or Wrapping)
Convex Hull | Set 2 (Graham Scan)
Given n line segments, find if any two segments intersect
Line Clipping | Set 1 (Cohen–Sutherland Algorithm)
Program for Fibonacci numbers
Write a program to print all permutations of a given string
C++ Data Types
Set in C++ Standard Template Library (STL)
Coin Change | DP-7