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

नट और बोल्ट समस्या


विभिन्न नटों की सूची और बोल्ट की दूसरी सूची दी गई है। हमारा काम दी गई सूची से नट और बोल्ट का सही मिलान करना है, और उस नट को बोल्ट के साथ मिलाना है, जब वह मेल खाता है।

इस समस्या का समाधान त्वरित छँटाई तकनीक द्वारा किया जाता है। बोल्ट के अंतिम तत्व को धुरी के रूप में लेते हुए, नट सूची को पुनर्व्यवस्थित करें और उस नट की अंतिम स्थिति प्राप्त करें जिसका बोल्ट धुरी तत्व है। नट सूची को विभाजित करने के बाद, हम चयनित नट का उपयोग करके बोल्ट सूची को विभाजित कर सकते हैं। सभी मैचों को प्राप्त करने के लिए बाएं और दाएं उप-सूचियों के लिए समान कार्य किए जाते हैं।

इनपुट और आउटपुट

Input:
The lists of locks and keys.
nuts = { ),@,*,^,(,%, !,$,&,#}
bolts = { !, (, #, %, ), ^, &, *, $, @ }
Output:
After matching nuts and bolts:
Nuts:  ! # $ % & ( ) * @ ^
Bolts: ! # $ % & ( ) * @ ^

एल्गोरिदम

विभाजन (सरणी, निम्न, उच्च, धुरी)

इनपुट: एक सरणी, निम्न और उच्च अनुक्रमणिका, धुरी तत्व।

आउटपुट: धुरी तत्व का अंतिम स्थान।

Begin
   i := low
   for j in range low to high, do
      if array[j] < pivot, then
         swap array[i] and array[j]
         increase i by 1
      else if array[j] = pivot, then
         swap array[j] and array[high]
         decrease j by 1
   done

   swap array[i] and array[high]
   return i
End

nutAndBoltMatch(नट, बोल्ट, लो, हाई)

इनपुट: नट की सूची, बोल्ट की सूची, सरणी का निचला और उच्च सूचकांक।

आउटपुट: प्रदर्शित करें कि कौन सा नट किस बोल्ट के लिए है।

Begin
   pivotLoc := partition(nuts, low, high, bolts[high])
   partition(bolts, low, high, nuts[pivotLoc])
   nutAndBoltMatch(nuts, bolts, low, pivotLoc-1)
   nutAndBoltMatch(nuts, bolts, pivotLoc + 1, high)
End

उदाहरण

#include<iostream>
using namespace std;

void show(char array[], int n) {
   for(int i = 0; i<n; i++)
      cout << array[i] << " ";
}

int partition(char array[], int low, int high, char pivot) {    //find location of pivot for quick sort
   int i = low;
   for(int j = low; j<high; j++) {
      if(array[j] <pivot) {    //when jth element less than pivot, swap ith and jth element
         swap(array[i], array[j]);
         i++;
      }else if(array[j] == pivot) {    //when jth element is same as pivot, swap jth and last element
         swap(array[j], array[high]);
         j--;
      }
   }
   swap(array[i], array[high]);
   return i;    //the location of pivot element
}

void nutAndBoltMatch(char nuts[], char bolts[], int low, int high) {
   if(low < high) {
      int pivotLoc = partition(nuts, low, high, bolts[high]);   //choose item from bolt to nut partitioning
      partition(bolts, low, high, nuts[pivotLoc]);    //place previous pivot location in bolt also
      nutAndBoltMatch(nuts, bolts, low, pivotLoc - 1);
      nutAndBoltMatch(nuts, bolts, pivotLoc+1, high);
   }
}

int main() {
   char nuts[] = {')','@','*','^','(','%','!','$','&','#'};
   char bolts[] = {'!','(','#','%',')','^','&','*','$','@'};
   int n = 10;
   nutAndBoltMatch(nuts, bolts, 0, n-1);
   cout << "After matching nuts and bolts:"<< endl;
   cout << "Nuts:  "; show(nuts, n); cout << endl;
   cout << "Bolts: "; show(bolts, n); cout << endl;
}

आउटपुट

After matching nuts and bolts:
Nuts:  ! # $ % & ( ) * @ ^
Bolts: ! # $ % & ( ) * @ ^

  1. RAM समस्या के लक्षण और इसे कैसे ठीक करें

    इस लेख में आपके कंप्यूटर के सबसे महत्वपूर्ण घटकों में से एक के बारे में सभी आवश्यक जानकारी शामिल है जिसे रैंडम एक्सेस मेमोरी या रैम के रूप में जाना जाता है। हम ब्लॉग में निम्नलिखित विषयों को शामिल करेंगे। बिना रुके, चलिए शुरू करते हैं! RAM क्या है? रैम या रैंडम एक्सेस मेमोरी किसी भी कंप्यूटर सिस

  1. Google Chrome और डेस्कटॉप आइकन ताज़ा करने की समस्या

    यहाँ सबसे अजीब छोटी समस्या है जिसका आप सामना कर सकते हैं - या थोड़ी देर में पढ़ सकते हैं। मेरी एक विंडोज मशीन पर, मैंने एक अजीब घटना देखी। हर बार जब मैं Google Chrome (नवीनतम संस्करण लिखे जाने पर) लॉन्च करता, ब्राउज़र बंद करता, या - अभी तक सबसे अच्छा - Gmail खाते में साइन इन या आउट करता, तो मेरे सभी

  1. विंडोज 10, 8.1 और 7 में 100 डिस्क उपयोग समस्या को ठीक करने के लिए 5 टिप्स

    यदि आप अनुभव करते हैं कि विंडोज़ 10 अपडेट स्थापित करने के बाद विंडोज़ 10 अच्छा प्रदर्शन नहीं कर रहा है, जैसे कि स्टार्टअप पर सिस्टम फ़्रीज़ हो जाता है या एप्लिकेशन आपके क्लिक का जवाब नहीं दे रहे हैं। और टास्क मैनेजर पर जाँच करने पर आपको पता चल सकता है कि आपका सिस्टम ड्राइव 100 पर चल रहा है, जो ऑपरेट