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

C++ में एक ही क्रम में सभी तत्वों वाले सबसे छोटे उप-सरणी का पता लगाएं

मान लीजिए कि हमारे पास m और n आकार के दो सरणियाँ हैं, कार्य पहली सरणी में न्यूनतम लंबाई उपसरणी खोजना है, जिसमें सभी तत्व शामिल हैं यदि दूसरा सरणी है। दूसरी सरणी में तत्व गैर-सन्निहित में बड़े सरणी में मौजूद हो सकता है लेकिन क्रम समान होना चाहिए। इसलिए यदि दो सरणियाँ A =[2, 2, 4, 5, 8, 9], और B =[2, 5, 9] जैसी हैं, तो आउटपुट 5 होगा। A का सबसे छोटा उप-सरणी होगा [ 2, 4, 5, 8, 9]। यहाँ [2, 5, 9] जैसे सभी तत्व एक ही क्रम में हैं। तो आकार 5 है।

हम दूसरे एरे के पहले एलिमेंट के साथ पहले एलिमेंट मैच की जांच करके इसे हल कर सकते हैं। जब पहला तत्व मेल खाता है, तो हम दूसरी सरणी के बाकी तत्वों को मुख्य सरणी में मिलाते हैं, जब सभी तत्व मेल खाते हैं, तो यदि आवश्यक हो तो लंबाई को अपडेट करें। ऐसा करने के बाद सबएरे की न्यूनतम लंबाई लौटाएं।

उदाहरण

#include<iostream>
using namespace std;
int lengthMinSubarray(int A[], int n, int B[], int m) {
   int res = INT_MAX;
   for (int i = 0; i < n - m + 1; i++) {
      if (A[i] == B[0]) {
         int j = 0, idx = i;
         for (; idx < n; idx++) {
            if (A[idx] == B[j])
               j++;
            if (j == m)
               break;
         }
         if (j == m && res > idx - i + 1)
         res = (idx == n) ? idx - i : idx - i + 1;
      }
   }
   return res;
}
int main() {
   int A[] = { 5, 6, 5, 2, 7, 5, 6, 7, 5, 5, 7 };
   int B[] = { 5, 5, 7 };
   int n = sizeof(A)/sizeof(A[0]);
   int m = sizeof(B)/sizeof(B[0]);
   cout << "Minimum length of subarray: " << lengthMinSubarray(A, n, B, m);
}

आउटपुट

Minimum length of subarray: 3

  1. सबसे छोटी संख्या X ज्ञात कीजिए कि X! C++ में कम से कम Y अनुगामी शून्य होते हैं

    हमें एक संख्या Y लेनी है, हमें सबसे छोटी संख्या X मिलेगी, जैसे कि X! प्रशिक्षण शून्य की कम से कम Y संख्या शामिल है। उदाहरण के लिए, यदि Y =2, तो X का मान =10. जैसा कि X! =3228800। इसमें Y संख्या शून्य है। हम इसे बाइनरी सर्च का उपयोग करके हल कर सकते हैं। N में अनुगामी शून्यों की संख्या! N! में गुणनखं

  1. एक सरणी तत्व खोजें जैसे कि सभी तत्व इसके द्वारा c++ . का उपयोग करके विभाज्य हैं

    विचार करें कि हमारे पास कुछ तत्वों के साथ एक सरणी ए है। हमें A से एक अवयव इस प्रकार ज्ञात करना है कि सभी तत्वों को इससे विभाजित किया जा सके। मान लीजिए कि ए [15, 21, 69, 33, 3, 72, 81] जैसा है, तो तत्व 3 होगा, क्योंकि सभी संख्याएं 3 से विभाज्य हो सकती हैं। इस समस्या को हल करने के लिए, हम ए में सबसे

  1. सी ++ में सरणी के सभी तत्वों को समान बनाने के लिए न्यूनतम डिलीट ऑपरेशंस।

    समस्या कथन n तत्वों की एक सरणी को देखते हुए जैसे कि तत्व दोहरा सकते हैं। हम सरणी से किसी भी संख्या में तत्वों को हटा सकते हैं। कार्य इसे समान बनाने के लिए सरणी से हटाए जाने वाले तत्वों की न्यूनतम संख्या को खोजना है। arr[] = {10, 8, 10, 7, 10, -1, -4, 12} सभी सरणी तत्वों को समान बनाने के लिए हमें ह