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

उस नोड का पता लगाएं जिसका एक्स के साथ पूर्ण अंतर सी ++ में अधिकतम मूल्य देता है

मान लीजिए कि हमारे पास एक पेड़ है, और सभी नोड्स का वजन और एक पूर्णांक x है। हमें नोड i को खोजना है, जैसे |वेट[i] - x| न्यूनतम है। यदि ग्राफ नीचे जैसा है, और x =15

उस नोड का पता लगाएं जिसका एक्स के साथ पूर्ण अंतर सी ++ में अधिकतम मूल्य देता है

आउटपुट 3 होगा। अब विभिन्न नोड्स के लिए, यह नीचे जैसा होगा

नोड 1, |5 - 15| =10

नोड 2, |10 - 15| =5

नोड 3, |11 - 15| =4

नोड 4, |8 - 15| =7

नोड 5, |6 - 15| =9

विचार सरल है। हम पेड़ पर डीएफएस करेंगे, और नोड का ट्रैक रखेंगे, जिसका भारित निरपेक्ष अंतर x के साथ न्यूनतम मान देता है

उदाहरण

#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
int min_value = INT_MAX, x, result;
vector<int> graph[100];
vector<int> weight(100);
void dfs(int node, int parent) {
   if (min_value > abs(weight[node] - x)) {
      min_value = abs(weight[node] - x);
      result = node;
   }
   for (int to : graph[node]) {
      if (to == parent)
      continue;
      dfs(to, node);
   }
}
int main() {
   x = 15;
   weight[1] = 5;
   weight[2] = 10;
   weight[3] = 11;
   weight[4] = 8;
   weight[5] = 6;
   graph[1].push_back(2);
   graph[2].push_back(3);
   graph[2].push_back(4);
   graph[1].push_back(5);
   dfs(1, 1);
   cout << "The node number is: " << result;
}

आउटपुट

The node number is: 3

  1. सी ++ में मैट्रिक्स के किसी भी कॉलम में अधिकतम अंतर के साथ जोड़ी खोजें

    मान लीजिए कि हमारे पास एक मैट्रिक्स या ऑर्डर NxN है। हमें ऐसे तत्वों का एक युग्म खोजना है जो मैट्रिक्स के किसी भी स्तंभ से अधिकतम अंतर बनाते हैं। तो अगर मैट्रिक्स की तरह है - 1 2 3 5 3 5 9 6 7 तो आउटपुट 8 होगा। चूंकि जोड़ी कॉलम 0 से (1, 9) है। विचार सरल है, हमें बस प्रत्येक कॉलम के अधिकतम और

  1. C++ में बाइनरी सर्च ट्री में न्यूनतम मान वाला नोड खोजें

    मान लीजिए कि हमारे पास एक बाइनरी सर्च ट्री है। हमें बाइनरी सर्च ट्री में न्यूनतम तत्व खोजना है। तो अगर बीएसटी नीचे जैसा है - न्यूनतम तत्व 1 होगा। जैसा कि हम जानते हैं कि लेफ्ट सबट्री में हमेशा छोटे तत्व होते हैं। इसलिए यदि हम बाएं सबट्री को बार-बार पार करते हैं जब तक कि बाईं ओर शून्य न हो, हम सब

  1. C++ में दिए गए अंतर के साथ एक जोड़ी खोजें

    विचार करें कि हमारे पास एक सरणी A है, n विभिन्न तत्व हैं। हमें सरणी A से एक युग्म (x, y) ज्ञात करना है, ताकि x और y के बीच का अंतर दिए गए अंतर d के समान हो। मान लीजिए कि तत्वों की एक सूची A =[10, 15, 26, 30, 40, 70] की तरह है, और दिया गया अंतर 30 है, तो जोड़ी होगी (10, 40) और (30, 70) इस समस्या को