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

C++ में शेल्फ फिटिंग समस्या


इस समस्या में, हमें तीन पूर्णांक मान W, n, m दिए गए हैं जो दीवार की लंबाई W, शेल्फ के आकार n, और m को दर्शाते हैं। हमारा कार्य शेल्फ फिटिंग समस्या को हल करने के लिए एक प्रोग्राम बनाना है।

हमें शेल्फ को इस तरह फिट करने का तरीका ढूंढना है कि शेल्फ फिट करने के बाद बची हुई जगह न्यूनतम हो। हल करते समय एक द्वितीयक प्रतिबंध लागत है, बड़े शेल्फ अधिक लागत-प्रभावी हैं इसलिए हमें उन्हें प्राथमिकता देनी होगी।

आउटपुट निम्न रूप में होना चाहिए,

n आकार के शेल्फ की संख्या m आकार के शेल्फ की संख्या बची हुई जगह

समस्या को समझने के लिए एक उदाहरण लेते हैं

इनपुट: W = 12, n = 5, m = 3 आउटपुट: 0 4 0

व्याख्या

यहां, हम दीवार में ठीक 4, 3 आकार के शेल्फ फिट कर सकते हैं।

यह कुल लंबाई = 4*3 = 12 बनाएगा

तो, फिटिंग के बाद दीवार में कोई लंबाई शेष नहीं रहती।

समाधान दृष्टिकोण

समस्या का एक सरल समाधान ब्रूट फोर्स दृष्टिकोण का उपयोग करना है जो दीवार में शेल्फ फिट करने के प्रत्येक संभावित संयोजन की जांच करके उन संयोजनों को ढूंढता है जो दीवार में शेष जगह की लंबाई को न्यूनतम या समाप्त करते हैं। द्वितीयक कार्य के लिए, हम बड़े लंबाई के शेल्फ को पहले फिट करके शुरू करेंगे, यह बड़े वाले को प्राथमिकता देगा। हम देखेंगे कि कौन सा संयोजन अधिकतम संभव बड़े शेल्फ के साथ न्यूनतम परिणाम देता है।

उदाहरण

हमारे समाधान के कार्य को दर्शाने वाला प्रोग्राम

#include <bits/stdc++.h> using namespace std; void solveFittingShelves(int wall, int m, int n){    int numM = 0, numN = 0, minSpaceLeft = wall;    int p = wall/m, q = 0, rem = wall%m;    numM = p;    numN = q;    minSpaceLeft = rem;    while (wall >= n) {       q += 1;       wall = wall - n;       p = wall / m;       rem = wall % m;       if (rem <= minSpaceLeft) {          numM = p;          numN = q;          minSpaceLeft = rem;       }    }    cout<<numM<<" "<<numN<<" "<<minSpaceLeft<<endl; } int main(){    int W = 29, m = 3, n = 9;    cout<<"दीवार की लंबाई : "<<W<<endl;    cout<<"शेल्फ की लंबाई : "<<m<<"\t"<<n<<endl;    cout<<"इष्टतम शेल्फ फिटिंग : ";    solveFittingShelves(W, m, n);    return 0; }

आउटपुट

दीवार की लंबाई : 29 शेल्फ की लंबाई : 3 9 इष्टतम शेल्फ फिटिंग : 0 3 2

  1. - C++ प्रोग्राम: फ्रैक्शनल नैपसैक समस्या हल करना

    फ्रैक्शनल नैपसैक समस्या में, आइटम्स का एक सेट दिया जाता है, प्रत्येक का एक वजन और एक वैल्यू होती है। हमें नैपसैक की कुल वैल्यू को अधिकतम करने के लिए आइटम्स को तोड़ने की आवश्यकता होती है और यह लालची दृष्टिकोण (ग्रेडी अप्रोच) से किया जा सकता है। एल्गोरिदम Begin Item स्ट्रक्चर का ऐरे लें वैल्

  1. - C++ प्रोग्राम: 0-1 नैपसैक समस्या हल करना

    0-1 नैपसैक समस्या में, आइटम्स का एक सेट दिया जाता है, प्रत्येक का एक वजन और एक वैल्यू होती है। हमें प्रत्येक आइटम की संख्या निर्धारित करने की आवश्यकता होती है जिसे एक संग्रह में शामिल किया जाए ताकि कुल वजन दी गई सीमा से कम या बराबर हो और कुल वैल्यू जितना संभव हो उतना बड़ा हो। इनपुट Value = [10, 20

  1. - लिनक्स पर C++ के लिए सर्वश्रेष्ठ IDE कौन सा है?

    बड़े प्रोजेक्ट्स को केवल टेक्स्ट एडिटर्स पर प्रबंधित करना मुश्किल होता है। ऐसे मामलों में IDE का उपयोग करने से आप अधिक उत्पादक और कम निराश होंगे। विभिन्न प्रकार के IDE उपलब्ध हैं और आपको अपनी आवश्यकताओं के अनुरूप सही चुनना चाहिए। लिनक्स पर C++ के लिए कोई एक सर्वश्रेष्ठ IDE नहीं है; आपको अपने टूल को