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. सर्कुलर सरणी में अधिकतम योग जैसे कि कोई भी दो तत्व सी ++ में आसन्न नहीं हैं

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

  1. ऐसी संख्या x ज्ञात कीजिए कि C++ का प्रयोग करते हुए x और उसके अंकों का योग दिए गए n के बराबर हो।

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

  1. ऐसी संख्या x ज्ञात कीजिए कि C++ में x और उसके अंकों का योग दिए गए n के बराबर हो

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