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

तत्वों को वैध तरीके से पेंट करने के लिए रंगों की गणना करने के लिए सी ++ कोड

मान लीजिए कि हमारे पास n तत्वों के साथ एक सरणी A है। हमें तत्वों को रंगों में इस तरह से रंगना होगा कि -

  • यदि हम किसी भी रंग पर विचार करते हैं, तो इस रंग के सभी तत्वों को एक ही रंग के न्यूनतम तत्व से विभाज्य होना चाहिए।

  • उपयोग किए गए रंगों की संख्या कम से कम होनी चाहिए।

सभी दिए गए नंबरों को वैध तरीके से रंगने के लिए हमें रंगों की न्यूनतम संख्या ज्ञात करनी होगी।

इसलिए, यदि इनपुट ए =[10, 2, 3, 5, 4, 2] जैसा है, तो आउटपुट 3 होगा, क्योंकि पहले रंग को तत्वों ए [0] और ए [3] पर पेंट करें, दूसरा रंग पेंट करें तत्वों A[2] के लिए और तीसरे रंग को शेष तीन तत्वों पर पेंट करें।

कदम

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

n := size of A
ans := 0
sort the array A
for initialize i := 0, when i < n, update (increase i by 1), do:
   ok := 1
   for initialize j := 0, when j < i, update (increase j by 1),
do:
      ok := ok AND (1 if A[i] mod A[j] is not 0, otherwise 0)
   ans := ans + ok
return ans

उदाहरण

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

#include <bits/stdc++.h>
using namespace std;
int solve(vector<int> A)
{
   int n = A.size();
   int ans = 0;
   sort(A.begin(), A.end());
   for (int i = 0; i < n; i++)
   {
      int ok = 1;
      for (int j = 0; j < i; j++)
      ok &= (A[i] % A[j] != 0);
      ans += ok;
   }
   return ans;
}
int main()
{
   vector<int> A = { 10, 2, 3, 5, 4, 2 };
   cout << solve(A) << endl;
}

इनपुट

{ 10, 2, 3, 5, 4, 2 }

आउटपुट

3

  1. C++ कोड पाइल काउंट चेक करने के लिए दूसरे दिन से मान्य है

    मान लीजिए कि हमारे पास समान आकार के दो सरणियाँ X और Y हैं। पहले दिन ith इंडेक्स पर X[i] पत्थरों के ढेर हैं और दूसरे दिन ith इंडेक्स में Y[i] पत्थरों की संख्या है। पहले दिन कई सदस्य आए हैं। या तो वे कुछ नहीं करते हैं या वे किसी ढेर में कुछ पत्थर जोड़ते हैं या वे कुछ पत्थरों को एक ढेर से दूसरे ढेर में

  1. रोबोट द्वारा अंतिम स्थिति तक पहुंचने के लिए चरणों की गणना करने के लिए C++ कोड

    मान लीजिए कि हमारे पास दो निर्देशांक (x1, y1) और (x2, y2) हैं। एक रोबोट बिंदु (x1, y1) पर है और बिंदु (x2, y2) पर जाना चाहता है। एक ही चरण में, रोबोट एक सेल की ओर अपने 8 आसन्न निर्देशांकों की ओर बढ़ सकता है। हमें अंतिम स्थिति तक पहुँचने के लिए आवश्यक न्यूनतम चरणों की संख्या ज्ञात करनी होगी। इसलिए,

  1. C++ में समतल में समांतर चतुर्भुजों की संख्या

    हमें एक समतल दिया गया है जिसमें समांतर चतुर्भुज बनाने वाले बिंदु हैं और कार्य समांतर चतुर्भुजों की गणना करना है जो दिए गए बिंदुओं का उपयोग करके बनाए जा सकते हैं। समांतर चतुर्भुज में एक चतुर्भुज के विपरीत पक्ष समानांतर होते हैं और इसलिए विपरीत कोण बराबर होते हैं। इनपुट - int a[] = {0, 2, 5, 5, 2, 5,