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

C++ में एज को वेट असाइन करना ताकि वेट के संदर्भ में सबसे लंबा पथ न्यूनतम हो


यहां हम एक समस्या देखेंगे, इस समस्या में एक ट्री का एक एज और एक योग S दिया गया है। कार्य अन्य सभी वेट्स को वेट असाइन करना है, ताकि वेट के संदर्भ में सबसे लंबा पथ न्यूनतम हो। असाइन किए गए वेट्स का योग 'S' के समान है।

दृष्टिकोण सरल है। एक ट्री की संपत्ति कि एक पथ में अधिकतम दो लीफ नोड्स हो सकते हैं। इसका उपयोग समाधान प्राप्त करने के लिए किया जाएगा। इसलिए यदि हम केवल लीफ नोड्स से जुड़े एज को वेट असाइन करते हैं, और अन्य एज को 0 असाइन करते हैं। तो प्रत्येक एज जो लीफ नोड्स से जुड़ा है, उसे असाइन किया जाएगा:

C++ में एज को वेट असाइन करना ताकि वेट के संदर्भ में सबसे लंबा पथ न्यूनतम हो

चूंकि एक पथ में अधिकतम दो लीफ नोड्स हो सकते हैं, इसलिए सबसे लंबा पथ होगा:

C++ में एज को वेट असाइन करना ताकि वेट के संदर्भ में सबसे लंबा पथ न्यूनतम हो

उदाहरण

#include<iostream> #include<vector> using namespace std; void insertEdge(int u, int v, vector<int> adj[]) {    adj[u].push_back(v);    adj[v].push_back(u); } long double pathLength(vector<int> adj[], int sum, int n) {    int count = 0;    for (int i = 1; i <= n; i++) {       if (adj[i].size() == 1)          count++;    }    long double ans = 2.0 * (long double)(sum / (long double)(count));    return ans; } int main() {    int n = 6;    vector<int> adj[n + 1];    insertEdge(1, 2, adj);    insertEdge(2, 3, adj);    insertEdge(2, 4, adj);    insertEdge(4, 5, adj);    insertEdge(4, 6, adj);    int sum = 1;    cout << pathLength(adj, sum, n); }

आउटपुट

0.5

  1. सर्कुलर ऐरे में अधिकतम योग जहाँ कोई दो आसन्न तत्व न हों - C++ सर्कुलर ऐरे में अधिकतम योग जहाँ कोई दो आसन्न तत्व न हों - C++

    इस समस्या में, हमें एक सर्कुलर ऐरे cirArr[] दिया गया है। हमारा कार्य एक प्रोग्राम बनाना है जो C++ में सर्कुलर ऐरे में अधिकतम योग ढूंढे जहाँ कोई दो आसन्न तत्व न हों।समस्या विवरणसर्कुलर ऐरे के लिए, हमें ऐरे के तत्वों का अधिकतम योग ढूंढना है जहाँ आसन्न तत्वों को नहीं लिया जा सकता, यानी हमें वैकल्पिक तत

  1. - C++ का उपयोग करके एक संख्या x खोजें जिसके अंकों का योग x के बराबर दिए गए n के बराबर हो

    यहां हम एक समस्या देखेंगे, जहां हम एक संख्या n लेते हैं, हमें एक अन्य मान x ढूंढना है, जैसे कि x + x के अंकों का योग दी गई संख्या n के बराबर हो। मान लीजिए n का मान 21 है। यह प्रोग्राम x = 15 लौटाएगा, क्योंकि 15 + 15 के अंकों का योग (1+5) = 21 = n होता है। इसे हल करने के लिए, हमें सरल दृष्टिकोण अपना

  1. - C++ में दी गई संख्या n के लिए x ढूंढें जहां x + अंकों का योग = n

    समस्या विवरण एक संख्या n दी गई है, हमें एक मान x ढूंढना है जिससे x + x के अंकों का योग = n हो। उदाहरण के लिए, n = 21 के लिए, x = 15 होगा क्योंकि 15 + (1+5) = 21। हल दृष्टिकोण सरल दृष्टिकोण: 1 से n तक पुनरावृति करें, प्रत्येक संख्या के लिए जांचें कि क्या संख्या + उसके अंकों का योग = n है। यदि हां,