ভিন্ন লক এবং অন্য একটি কী-এর লিস্ট দেওয়া আছে। আমাদের কাজ প্রদত্ত লিস্ট থেকে লক এবং কী-এর সঠিক মিল বের করা, এবং কীটি সঠিক হলে সেটি লক দিয়ে অ্যাসাইন করা।
এই পদ্ধতিতে আমরা সব লক ট্রাভার্স করব এবং একটি হ্যাশ-ম্যাপ তৈরি করব, তারপর, প্রতিটি কী হ্যাশ-ম্যাপে সার্চ করা হবে। যখন কীটি মেলে, তবে সেটিকে বৈধ কী হিসেবে চিহ্নিত করে লক দিয়ে অ্যাসাইন করা হবে।
ইনপুট এবং আউটপুট
ইনপুট: লক এবং কী-এর লিস্ট। lock = { ),@,*,^,(,%, !,$,&,#} key = { !, (, #, %, ), ^, &, *, $, @ } আউটপুট: মিল করার পর লক এবং কী: Locks: ! ( # % ) ^ & * $ @ Keys: ! ( # % ) ^ & * $ @অ্যালগরিদম
lockAndKeyProblem(lock, key, n)
ইনপুট: লক-এর লিস্ট, কী-এর লিস্ট, n।
আউটপুট: কোন কী কোন লক জন্য তা বের করুন।
শুরু
hashmap সংজ্ঞায়িত করুন
i ০ থেকে n-1 রেঞ্জে, করুন
hashmap[lock[i]] := i //লক জন্য হ্যাশম্যাপ সেট করুন
শেষ
i ০ থেকে n-1 রেঞ্জে, করুন
যদি key[i] হ্যাশম্যাপে পাওয়া যায়, তবে
lock[i] = key[i]
শেষ
শেষউদাহরণ
#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; //লক জন্য হ্যাশ ম্যাপ for(int i = 0; i<n; i++) //প্রতিটি লক জন্য প্রতিটি কী 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: ! ( # % ) ^ & * $ @