কম্পিউটার টিউটোরিয়াল

স্ট্রিং অ্যারের সব পারমুটেশন বের করার C প্রোগ্রাম

কয়েকটি স্ট্রিং একসাথে অ্যারেতে থাকলে, তাদের সব সম্ভাব্য পারমুটেশন (क्रमবিন্যাস) প্রিন্ট করতে হবে। প্রতিটি পারমুটেশন আলাদা লাইনে বা স্পেস দিয়ে আলাদা করা হয়।

উদাহরণ

ইনপুট: {"abc", "def", "ghi"}

আউটপুট:
abc def ghi
abc ghi def
def abc ghi
def ghi abc
ghi abc def
ghi def abc

এলগরিদম

  1. next_permutation() ফাংশন বানান যা লেক্সিকোগ্রাফিকালি পরবর্তী পারমুটেশন জেনারেট করে।
  2. স্ট্রিং অ্যারেকে সাজিয়ে প্রথম পারমুটেশন প্রিন্ট করুন।
  3. do-while লুপে next_permutation() কল করে সব পারমুটেশন প্রিন্ট করুন যতক্ষণ না এটি 0 ফেরত দেয়।

C কোড উদাহরণ

#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));
    return 0;
}

ইনপুট ও আউটপুট

ইনপুট: {"abc", "def", "ghi"}

আউটপুট: সব ৬টি পারমুটেশন লাইনে লাইনে প্রিন্ট হবে।

  1. রিকারেন্স রিলেশন থেকে nth টার্ম বের করার C প্রোগ্রাম

  2. ফ্যাক্টোরিয়ালে ট্রেইলিং জিরোর সংখ্যা বের করার C প্রোগ্রাম

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

  4. দেওয়া স্ট্রিংয়ের সকল পারমিউটেশন প্রিন্ট করার পাইথন প্রোগ্রাম