কয়েকটি স্ট্রিং একসাথে অ্যারেতে থাকলে, তাদের সব সম্ভাব্য পারমুটেশন (क्रमবিন্যাস) প্রিন্ট করতে হবে। প্রতিটি পারমুটেশন আলাদা লাইনে বা স্পেস দিয়ে আলাদা করা হয়।
উদাহরণ
ইনপুট: {"abc", "def", "ghi"}
আউটপুট:
abc def ghi
abc ghi def
def abc ghi
def ghi abc
ghi abc def
ghi def abc
এলগরিদম
next_permutation()ফাংশন বানান যা লেক্সিকোগ্রাফিকালি পরবর্তী পারমুটেশন জেনারেট করে।- স্ট্রিং অ্যারেকে সাজিয়ে প্রথম পারমুটেশন প্রিন্ট করুন।
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"}
আউটপুট: সব ৬টি পারমুটেশন লাইনে লাইনে প্রিন্ট হবে।