কম্পিউটার

C প্রোগ্রাম প্রদত্ত স্ট্রিং এর পারমুটেশন খুঁজে বের করতে


ধরুন আমাদের একটি অ্যারেতে কয়েকটি স্ট্রিং আছে। আমাদের আলাদা আলাদা লাইনে তাদের সব পারমুটেশন খুঁজে বের করতে হবে।

সুতরাং, যদি ইনপুটটি স্ট্রিং এর মত হয় =["abc", "def", "ghi"], তাহলে আউটপুট হবে

abc def ghi
abc ghi def
def abc ghi
def ghi abc
ghi abc def
ghi def abc

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • একটি ফাংশন সংজ্ঞায়িত করুন next_permutation(), এতে n, স্ট্রিং অ্যারে s লাগবে,
  • আরম্ভ করার জন্য i :=n - 1, যখন i> 0, আপডেট করুন (i 1 দ্বারা কম করুন), করুন:
    • যদি s[i]> s[i - 1]), তারপর:
      • j :=i + 1
    • j , আপডেট করুন (j 1 দ্বারা বাড়ান), করুন:
      • যদি s[j] <=s[i - 1]), তারপর:
        • লুপ থেকে বেরিয়ে আসুন
      • t :=s[i - 1]
    • s[i - 1] =s[j - 1]
    • s[j - 1] =t
    • i
    • t :=s[i]
    • s[i] :=s[n - 1]
    • s[n - 1] =t
  • প্রত্যাবর্তন 1
  • আরম্ভ করার জন্য i :=0, যখন i
  • t :=s[i]
  • s[i] :=s[n - 1]
  • s[n - 1] =t
  • রিটার্ন 0
  • প্রধান পদ্ধতি থেকে নিম্নলিখিতগুলি করুন
  • পরবর্তী_পারমিউটেশন(n, স্ট্রিং) 0{
      না হওয়া পর্যন্ত
    • নিম্নলিখিত অসীমভাবে করুন
    • আরম্ভ করার জন্য i :=0, যখন i
    • প্রদর্শন স্ট্রিং[i] তারপর (যদি আমি n - 1 এর মতো হয়, তাহলে পরবর্তী লাইনে যান, অন্যথায় ফাঁকা জায়গা প্রিন্ট করুন

    উদাহরণ

    আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

    #include <stdio.h>
    #include <string.h>
    int next_permutation(int n, char **s){
        for (int i = n - 1; i > 0; i--)
            if (strcmp(s[i], s[i - 1]) > 0){
                int j = i + 1;
                for (; j < n; j++)
                    if (strcmp(s[j], s[i - 1]) <= 0)
                        break;
                char *t = s[i - 1];
                s[i - 1] = s[j - 1];
                s[j - 1] = t;
                for (; i < n - 1; i++, n--){
                    t = s[i];
                    s[i] = s[n - 1];
                    s[n - 1] = t;
                }
                return 1;
            }
        for (int i = 0; i < n - 1; i++, n--){
            char *t = s[i];
            s[i] = s[n - 1];
            s[n - 1] = t;
        }
        return 0;
    }
    int main(){
        char *strings[] = {"abc", "def", "ghi"};
        int n = 3;
        do{
            for (int i = 0; i < n; i++)
                printf("%s%c", strings[i], i == n - 1 ? '\n' : ' ');
        } while (next_permutation(n, strings));
    }
    

    ইনপুট

    {"abc", "def", "ghi"}

    আউটপুট

    abc def ghi
    abc ghi def
    def abc ghi
    def ghi abc
    ghi abc def
    ghi def abc

    1. প্রদত্ত পুনরাবৃত্ত সম্পর্কের nম পদ খুঁজে বের করতে সি প্রোগ্রাম

    2. C প্রোগ্রাম প্রদত্ত ফ্যাক্টোরিয়ালের মধ্যে শূন্যের পেছনের শূন্য খুঁজে বের করতে

    3. সি প্রোগ্রাম নন-রিকারসিভ ফাংশন ব্যবহার করে সংখ্যার GCD খুঁজে বের করতে

    4. পাইথন প্রোগ্রাম একটি প্রদত্ত স্ট্রিং এর সমস্ত স্থানান্তর প্রিন্ট করতে