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

C++ प्रोग्राम रंगीन टोपियों के साथ बिल्लियों के शब्द सही हैं या नहीं की जाँच करने के लिए

मान लीजिए कि हमारे पास एन तत्वों के साथ एक सरणी ए है। विचार करें कि एन बिल्लियाँ हैं और उन्हें 1 से एन तक गिना जाता है। प्रत्येक बिल्ली ने एक टोपी पहन रखी है और बिल्ली कहती है, "मेरे अलावा बिल्लियों के स्वामित्व वाले एन -1 टोपियों में बिल्कुल ए [i] विभिन्न रंगों की संख्या है"। हमें यह जांचना होगा कि क्या टोपियों के रंगों का एक क्रम मौजूद है जो बिल्लियों की टिप्पणियों के अनुरूप है।

इसलिए, यदि इनपुट A =[1, 2, 2] जैसा है, तो आउटपुट सही होगा, क्योंकि यदि बिल्ली 1, 2 और 3 क्रमशः लाल, नीले और नीले रंग की टोपी पहनती है, तो यह संगत है बिल्लियों की टिप्पणी।

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

mn := inf, mx = 0, cnt = 0
n := size of A
Define an array a of size (n + 1)
for initialize i := 1, when i <= n, update (increase i by 1), do:
   a[i] := A[i - 1]
   mn := minimum of mn and a[i]
   mx = maximum of mx and a[i]
for initialize i := 1, when i <= n, update (increase i by 1), do:
   if a[i] is same as mn, then:
      (increase cnt by 1)
   if mx is same as mn, then:
      if mn is same as n - 1 or 2 * mn <= n, then:
         return true
    Otherwise
return false
otherwise when mx is same as mn + 1, then:
   if mn >= cnt and n - cnt >= 2 * (mx - cnt), then:
      return true
   Otherwise
      return false
Otherwise
return false

उदाहरण

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

#include <bits/stdc++.h>
using namespace std;
bool solve(vector<int> A) {
   int mn = 99999, mx = 0, cnt = 0;
   int n = A.size();
   vector<int> a(n + 1);
   for (int i = 1; i <= n; ++i) {
      a[i] = A[i - 1];
      mn = min(mn, a[i]), mx = max(mx, a[i]);
   }
   for (int i = 1; i <= n; ++i)
      if (a[i] == mn)
         ++cnt;
   if (mx == mn) {
      if (mn == n - 1 || 2 * mn <= n)
         return true;
      else
         return false;
   }
   else if (mx == mn + 1) {
      if (mn >= cnt && n - cnt >= 2 * (mx - cnt))
         return true;
      else
         return false;
   }
   else
      return false;
}
int main() {
   vector<int> A = { 1, 2, 2 };
   cout << solve(A) << endl;
}

इनपुट

{ 1, 2, 2 }

आउटपुट

1

  1. यह जांचने के लिए प्रोग्राम कि कोई पेड़ ऊंचाई संतुलित है या नहीं C++

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

  1. यह जांचने के लिए प्रोग्राम कि कोई ऐरे पालिंड्रोम है या C++ में STL का उपयोग नहीं कर रहा है

    एन पूर्णांकों की एक सरणी गिरफ्तारी [एन] को देखते हुए, कार्य यह पता लगाना है कि सरणी एक पैलिंड्रोम है या नहीं। हमें बताए गए कार्य को C++ में STL का उपयोग करके करना है। सी ++ में एसटीएल (स्टैंडर्ड टेम्प्लेट लाइब्रेरी) की एक विशेषता है, यह सी ++ टेम्प्लेट क्लासेस का एक सेट है जो डेटा संरचनाओं और ढेर,

  1. C++ में तीन बिंदु समरेखीय हैं या नहीं, यह जांचने के लिए कार्यक्रम

    तीन अलग-अलग महत्वपूर्ण बिंदुओं के साथ दिया गया है और कार्य यह जांचना है कि बिंदु समरेखीय हैं या नहीं। यदि बिंदु एक ही रेखा पर स्थित हों तो बिंदु संरेख कहलाते हैं और यदि वे भिन्न रेखाओं पर होते हैं तो वे संरेख नहीं होते हैं। नीचे दिए गए समरेखीय और असंरेख बिंदुओं की आकृति है। इनपुट x1 = 1, x2 = 2