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

सरणी आकार के आधे से अधिक विभाजन तत्वों के बाद संख्याओं की गणना करने के लिए सी ++ कोड

मान लीजिए कि हमारे पास n तत्वों के साथ एक सरणी A है। हमें कुछ गैर-शून्य पूर्णांक d खोजना है, जैसे कि, सरणी में प्रत्येक संख्या को d से विभाजित करने के बाद, सरणी में प्रस्तुत किए गए सकारात्मक मानों की संख्या सरणी आकार के आधे से अधिक या उसके बराबर हो . यदि d के कई मान हैं जो शर्त को पूरा करते हैं। यदि एक से अधिक उत्तर हैं, तो उनमें से किसी एक को वापस करें।

इसलिए, यदि इनपुट ए =[10, 0, -7, 2, 6] जैसा है, तो आउटपुट 4 होगा, क्योंकि यहाँ n =5 है, इसलिए हमें कम से कम $\mathrm{\left \lceil 5/ की आवश्यकता है। विभाजन के बाद 2\दाएं \rceil=3}$ तत्व। यदि d =4, विभाजन के बाद की सरणी [2.5, 0, −1.75, 0.5, 1.5] होगी, जिसमें 3 धनात्मक संख्याएँ 2.5, 0.5 और 1.5 हैं।

कदम

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

z := 0, f := 0
n := size of A
for initialize i := 0, when i < n, update (increase i by 1), do:
   a := A[i]
   if a > 0, then:
      (increase z by 1)
   if a < 0, then:
      (increase f by 1)
if 2 * z >= n, then:
      return 1
otherwise when 2 * f >= n, then:
   return -1
Otherwise
   return 0

उदाहरण

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

#include <bits/stdc++.h>
using namespace std;
int solve(vector<int> A){
   int z = 0, f = 0;
   int n = A.size();
   for (int i = 0; i < n; i++){
      int a = A[i];
      if (a > 0)
         z++;
      if (a < 0)
         f++;
   }
   if (2 * z >= n)
      return 1;
   else if (2 * f >= n)
      return -1;
   else
      return 0;
}
int main(){
   vector<int> A = { 10, 0, -7, 2, 6 };
   cout << solve(A) << endl;
}

इनपुट

{ 10, 0, -7, 2, 6 }

आउटपुट

1

  1. सी++ में ऐरे साइज को आधा कर दें

    मान लीजिए कि हमारे पास एक सरणी गिरफ्तारी है। हम पूर्णांकों का एक सेट चुन सकते हैं और सरणी में इन पूर्णांकों की सभी घटनाओं को हटा सकते हैं। हमें समुच्चय का न्यूनतम आकार ज्ञात करना है ताकि सरणी के कम से कम आधे पूर्णांकों को हटा दिया जाए। तो उदाहरण के लिए, अगर arr =[3,3,3,3,5,5,5,2,2,7], तो आउटपुट 2 हो

  1. C++ में दिए गए नंबरों तक सरणी तत्वों को अधिकतम करें

    समस्या कथन पूर्णांकों की एक सरणी, एक संख्या और एक अधिकतम मान को देखते हुए, कार्य उस अधिकतम मान की गणना करना है जो सरणी तत्वों से प्राप्त किया जा सकता है। शुरुआत से ट्रैवर्सिंग एरे पर प्रत्येक मान को पिछले इंडेक्स से प्राप्त परिणाम से जोड़ा या घटाया जा सकता है जैसे कि किसी भी बिंदु पर परिणाम 0 से कम

  1. किसी सरणी के तत्वों को तब तक जोड़ना जब तक कि प्रत्येक तत्व C++ में k से बड़ा या उसके बराबर न हो जाए।

    सरणी - एक सरणी एक ही डेटा प्रकार के तत्वों का एक कंटेनर होता है, जिसके तत्व 0 अनुक्रमित होते हैं। इस समस्या में, हम पूर्णांकों की एक सरणी का उपयोग करेंगे। और जांचें कि सभी तत्व दी गई संख्या से बड़े हैं या नहीं। यहां हम जांच करेंगे कि सरणी के सभी तत्व दिए गए संख्या k से बड़े या बराबर हैं या नहीं। यद