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

C++ प्रोग्राम दो जोड़ी क्लॉक रीडिंग के बीच अधिकतम संभव न्यूनतम समय अंतराल खोजने के लिए

मान लीजिए कि हमारे पास एन तत्वों के साथ एक सरणी डी है। विचार करें कि एक कोड उत्सव में अमल सहित N+1 प्रतिभागी हैं। अमल ने जाँच की और पाया कि उसके शहर में स्थानीय समय और i-th व्यक्ति के शहर के बीच का समय अंतराल D[i] घंटे था। दो शहरों के बीच का समय अंतराल:किन्हीं दो शहरों ए और बी के लिए, यदि शहर बी में स्थानीय समय उस समय है जब शहर ए में स्थानीय समय 0 बजे है, तो इन दोनों के बीच का समय अंतराल शहर न्यूनतम d और 24-d घंटे हैं।

यहां, हम 24 घंटे के नोटेशन का उपयोग कर रहे हैं। फिर, N+1 लोगों में से चुने गए दो लोगों की प्रत्येक जोड़ी के लिए, उन्होंने उनके शहरों के बीच के समय के अंतराल को लिखा। माना उनमें से सबसे छोटा समय अंतराल s घंटे है। हमें s का अधिकतम संभव मान ज्ञात करना है।

इसलिए, यदि इनपुट D =[7, 12, 8] जैसा है, तो आउटपुट 4 होगा, क्योंकि दूसरे और तीसरे व्यक्ति के शहरों के बीच का समय अंतराल 4 घंटे है।

कदम

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

n := size of D
sort the array D
Define an array t
insert 0 at the end of t
for initialize i := 0, when i < n, update (increase i by 1), do:
   if i mod 2 is same as 0, then:
      insert D[i] at the end of t
   Otherwise
      insert 24 - D[i] at the end of t
sort the array t
ans := inf
for initialize i := 1, when i < size of t, update (increase i by 1), do:
   ans := minimum of ans and t[i] - t[i - 1]
return ans

उदाहरण

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

#include <bits/stdc++.h>
using namespace std;
int solve(vector<int> D) {
   int n = D.size();
   sort(D.begin(), D.end());
   vector<int> t;
   t.push_back(0);
   for (int i = 0; i < n; i++){
      if (i % 2 == 0)
         t.push_back(D[i]);
      else
         t.push_back(24 - D[i]);
   }
   sort(t.begin(), t.end());
   int ans = 1e9;
   for (int i = 1; i < t.size(); i++){
      ans = min(ans, t[i] - t[i - 1]);
   }
   return ans;
}
int main(){
   vector<int> D = { 7, 12, 8 };
   cout << solve(D) << endl;
}

इनपुट

{ 7, 12, 8 }

आउटपुट

4

  1. सी ++ में घड़ी के घंटे और मिनट के बीच कोण खोजने का कार्यक्रम?

    मान लीजिए हमारे पास दो मान घंटे और मिनट हैं। हमें घण्टे और मिनट की सूई के बीच बना एक छोटा कोण ज्ञात करना है। इसलिए, यदि इनपुट घंटा =12 मिनट =45 जैसा है, तो आउटपुट 112.5 . होगा इसे हल करने के लिए, हम इन चरणों का पालन करेंगे: अगर एच =12, तो एच सेट करें:=0 अगर एम =60, तो एम सेट करें:=0 hAn

  1. C++ प्रोग्राम में एक बाइनरी ट्री के दो नोड्स के बीच की दूरी का पता लगाएं

    इस समस्या में हमें एक बाइनरी ट्री और दो नोड दिए जाते हैं। हमारा काम बाइनरी ट्री के दो नोड्स के बीच की दूरी का पता लगाने के लिए एक प्रोग्राम बनाना है। समस्या का विवरण हमें दो नोड्स के बीच की दूरी को खोजने की जरूरत है जो कि किनारों की न्यूनतम संख्या है जो एक नोड से दूसरे नोड में जाने पर ट्रैवर्स की ज

  1. C++ . में दिए गए वृत्त के दो भागों के कोणों का सबसे छोटा अंतर ज्ञात करने का कार्यक्रम

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