Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में टू डायमेंशन में गिफ्ट रैपिंग एल्गोरिदम को लागू करना


हम C++ में टू डायमेंशन में गिफ्ट रैपिंग एल्गोरिदम को लागू करने के लिए एक प्रोग्राम विकसित करेंगे। गिफ्ट रैपिंग एल्गोरिदम दिए गए पॉइंट्स के सेट के कन्वेक्स हल की गणना करने के लिए एक एल्गोरिदम है।

एल्गोरिदम

Begin    function convexHull() n पॉइंट्स के सेट का कन्वेक्स हल खोजने के लिए:    कम से कम तीन पॉइंट्स होने चाहिए।    परिणाम को इनिशियलाइज़ करें।    सबसे बाएं पॉइंट को खोजें।    सबसे बाएं पॉइंट से शुरू करके, काउंटरक्लॉकवाइज़ चलते रहें    जब तक कि स्टार्ट पॉइंट पर फिर से न पहुंच जाएं।    परिणाम प्रिंट करें। End

उदाहरण कोड

#include <iostream> using namespace std; #define INF 10000 struct P {    int x;    int y; }; int orient(P a, P b, P c) {    int v = (b.y - a.y) * (c.x - b.x) - (b.x - a.x) * (c.y - b.y);    if (v == 0)       return 0; // colinear       return (v >0) ? 1 : 2; // clock or counterclock wise } void convexHull(P points[], int m) {    if (m < 3)//कम से कम तीन पॉइंट्स आवश्यक       return;    int n[m];    for (int i = 0; i < m; i++)       n[i] = -1;       int l = 0;//परिणाम इनिशियलाइज़ करें।    for (int i = 1; i < m; i++)       if (points[i].x < points[l].x)          l = i; //सबसे बाएं पॉइंट को खोजें          int p = l, q;    do {       q = (p + 1) % m;       for (int i = 0; i < m; i++)          if (orient(points[p], points[i], points[q]) == 2)             q = i;             n[p] = q;             p = q;    } while (p != l);    for (int i = 0; i < m; i++) {       if (n[i] != -1)          cout << "(" << points[i].x << ", " << points[i].y << ")\n";    } } int main() {    P points[] = {{0, 4}, {2, 1}, {2, 3}, {4, 1}, {3, 0}, {1, 1}, {7, 6}};    cout << "The points in the convex hull are: ";    int n = sizeof(points) / sizeof(points[0]);    convexHull(points, n);    return 0; }

आउटपुट

The points in the convex hull are: (0, 4) (4, 1) (3, 0) (1, 1) (7, 6)

  1. - C++ प्रोग्राम: हीप सॉर्ट लागू करना

    एक हीप एक पूर्ण बाइनरी ट्री है जो या तो मिन हीप या मैक्स हीप है। एक मैक्स हीप में, रूट पर कुंजी हीप में मौजूद सभी कुंजियों में अधिकतम होनी चाहिए। यह गुण उस बाइनरी ट्री में सभी नोड्स के लिए पुनरावर्ती रूप से सत्य होना चाहिए। मिन हीप मिनहीप के समान है। फंक्शन विवरण void BHeap::Insert(int ele): हीप मे

  1. - C++ प्रोग्राम: बबल सॉर्ट लागू करना

    बबल सॉर्ट तुलना-आधारित सॉर्टिंग एल्गोरिदम है। इस एल्गोरिदम में आसन्न तत्वों की तुलना की जाती है और सही क्रम बनाने के लिए स्वैप किया जाता है। यह एल्गोरिदम अन्य एल्गोरिदम की तुलना में सरल है, लेकिन इसकी कुछ कमियां भी हैं। यह एल्गोरिदम बड़ी संख्या में डेटा सेट के लिए उपयुक्त नहीं है। सॉर्टिंग कार्यों

  1. - C++ प्रोग्राम: रेडिक्स सॉर्ट लागू करना

    रेडिक्स सॉर्ट गैर-तुलनात्मक सॉर्टिंग एल्गोरिदम है। यह सॉर्टिंग एल्गोरिदम पूर्णांक कुंजियों पर काम करता है उन अंकों को समूहित करके जो समान स्थिति और मान साझा करते हैं। रेडिक्स एक संख्या प्रणाली का आधार है। जैसा कि हम जानते हैं कि दशमलव प्रणाली में रेडिक्स या आधार 10 है। इसलिए कुछ दशमलव संख्याओं को स