কম্পিউটার

পুনরাবৃত্তি ব্যবহার করে একটি স্ট্রিং সব permutations?


এই বিভাগে আমরা দেখব কিভাবে একটি স্ট্রিং এর সমস্ত পারমুটেশন পেতে হয়। পুনরাবৃত্ত পদ্ধতি খুব সহজ. এটি ব্যাক-ট্র্যাকিং পদ্ধতি ব্যবহার করে। কিন্তু এখানে আমরা পুনরাবৃত্তিমূলক পদ্ধতি ব্যবহার করব।

একটি স্ট্রিং ABC-এর সমস্ত পারমুটেশন হল {ABC, ACB, BAC, BCA, CAB, CBA} এর মত। আসুন আরও ভাল ধারণা পেতে অ্যালগরিদম দেখি৷

অ্যালগরিদম

getAllPerm(str)

 স্ট্রিং এর অক্ষর সাজাতে শুরু করুন সত্য থাকাকালীন, স্ট্রিংটি প্রিন্ট করুন str i :=str – 1 এর দৈর্ঘ্য যখন str[i - 1]>=str[i], do i :=i – 1 যদি i হয় 0, তারপর j :=str – 1 এর দৈর্ঘ্য সম্পন্ন হলে শেষে ফিরুন যখন j> i AND str[j] <=str[i – 1], do j :=j – 1 পজিশন থেকে অক্ষর বিনিময় করুন str[i - 1], str[j] স্ট্রিং বিপরীত. সম্পন্ন 

উদাহরণ

#include #include  namespace ব্যবহার করে std;void getAllPerm(string str){ sort(str.begin(), str.end()); while (সত্য){ cout <=str[i]){ যদি (--i ==0) রিটার্ন; } int j =str.length() - 1; যখন (j> i &&str[j] <=str[i - 1]) j--; অদলবদল(str[i - 1], str[j]); বিপরীত (str.begin() + i, str.end()); }}int main(){ string str ="WXYZ"; getAllPerm(str);}

আউটপুট

WXYZWXZYWYXZWYZWYZXWZXYWZYXWYZXWZYXYWZXYZWYZWYXWZYXYWZXYZWXZWYXZYWYWXZYWZXYXWZYXZYXZWYZWXYZWZWZWYZWYXZWYZWYZWZWZWYZWYXZXWYZXYWZYWXY> 
  1. জাভাতে একটি স্ট্রিং এর সমস্ত স্থানান্তর প্রিন্ট করুন

  2. জাভাতে ArrayList ব্যবহার করে একটি স্ট্রিংয়ের সমস্ত স্থানান্তর প্রিন্ট করুন

  3. রিকার্সন ব্যবহার করে লেক্সিকোগ্রাফিক অর্ডারে একটি স্ট্রিংয়ের সমস্ত পারমুটেশন প্রিন্ট করার জন্য পাইথন প্রোগ্রাম

  4. Python-এ itertools ব্যবহার করে স্ট্রিং-এর প্রথম n স্বতন্ত্র পারমিউটেশন প্রিন্ট করুন