विभिन्न तालों की सूची और चाबियों की एक अन्य सूची दी गई है। हमारा काम दी गई सूची में से लॉक और की का सही मिलान करना है, और सही होने पर उस कुंजी को लॉक के साथ असाइन करना है।
इस दृष्टिकोण में हम सभी तालों को पार करेंगे और एक हैश-मैप बनाएंगे, उसके बाद, हैश-मैप में प्रत्येक कुंजी की खोज की जाएगी। जब कुंजी मेल खाती है, तो उसे एक वैध कुंजी के रूप में चिह्नित किया जाता है और लॉक के साथ असाइन किया जाता है।
इनपुट और आउटपुट
Input: The lists of locks and keys. lock = { ),@,*,^,(,%, !,$,&,#} key = { !, (, #, %, ), ^, &, *, $, @ } Output: After matching Locks and Keys: Locks: ! ( # % ) ^ & * $ @ Keys: ! ( # % ) ^ & * $ @
एल्गोरिदम
lockAndKeyProblem(lock, key, n)
इनपुट: तालों की सूची, चाबियों की सूची, n.
आउटपुट: पता लगाएं कि कौन सी चाबी किस लॉक के लिए है।
Begin define hashmap for i in range (0 to n-1), do hashmap[lock[i]] := i //set hashmap for locks done for i in range (0 to n-1), do if key[i] is found in the hashmap, then lock[i] = key[i] done End
उदाहरण
#include<iostream> #include<map> using namespace std; void show(char array[], int n) { for(int i = 0; i<n; i++) cout << array[i] << " "; } void lockAndKeyProblem(char lock[], char key[], int n) { map<char, int> hashMap; for(int i = 0; i<n; i++) hashMap[lock[i]] = i; //hash map for locks for(int i = 0; i<n; i++) //for each keys for each lock if(hashMap.find(key[i]) != hashMap.end()) { lock[i] = key[i]; } } int main() { char lock[] = {')','@','*','^','(','%','!','$','&','#'}; char key[] = {'!','(','#','%',')','^','&','*','$','@'}; int n = 10; lockAndKeyProblem(lock, key, n); cout << "After matching Locks and Keys:"<<endl; cout << "Locks: "; show(lock, n); cout << endl; cout << "Keys: "; show(key, n); cout << endl; }
आउटपुट
After matching Locks and Keys: Locks: ! ( # % ) ^ & * $ @ Keys: ! ( # % ) ^ & * $ @