Аутор Иуврај Цхандра
ОбјавиТвеетЕмаил

Треба да одштампате пермутације низа? Показаћемо вам како на неколико језика.

Пермутација је распоред објеката одређеним редоследом. Можете пермутирати низ дужине н у н! начина.

У овом чланку ћете научити како пронаћи све пермутације датог низа користећи Ц ++, Питхон, ЈаваСцрипт и Ц.

Како функционишу пермутације?

Рецимо да имате жицу стр са „МУО“ као вредности низа. Од вас је затражено да прикажете пермутације низа. Ево како бисте поступили:

Пример 1: Нека стр = "МУО"

Пермутације „МУО“ су:

  • „МУО“
  • "МОУ"
  • „УМО“
  • „УОМ“
  • „ОУМ“
  • “ОМУ”

Обратите пажњу на редослед вредности. Ево још једног примера:

Пример 2: Нека је стр = "АБ"

Све пермутације „АБ“ су:

  • „АБ“
  • „БА“

Такође можете одштампати дупле пермутације ако се у датом низу појављују знакови који се понављају. (АББА, на пример)

Сада када разумете како пермутације функционишу, погледајмо како их можете пронаћи помоћу жељеног програмског језика.

Белешка: Дизајнирали смо следеће примере кода за испис пермутација за три низа: МУО, АБ и КСИЗ. Ако желите да користите било који од ових кодова, копирајте их и промените ове низове тако да одговарају вашем пројекту.

instagram viewer

Повезан: Како програмирањем претворити знакове низа у супротни случај

Ц ++ програм за штампање свих пермутација низа

Испод је Ц ++ програм за штампање свих пермутација низа:

// Ц ++ програм за штампање свих
// пермутације низа
#инцлуде
коришћење простора имена стд;
// Функција за штампање пермутација низа
воид финдПермутатионс (стринг стр, инт лефтИндек, инт ригхтИндек)
{
иф (лефтИндек == ригхтИндек)
{
цоут << стр << ендл;
}
елсе
{
фор (инт и = лефтИндек; и <= ригхтИндек; и ++)
{
свап (стр [лефтИндек], стр [и]);
финдПермутатионс (стр, лефтИндек+1, ригхтИндек);
//backtrack
свап (стр [лефтИндек], стр [и]);
}
}
}
// Код возача
инт маин ()
{
стринг стр1 = "МУО";
инт сизе1 = стр1.сизе ();
цоут << "стр1:" << стр1 << ендл;
цоут << "Пермутације" << стр1 << ":" << ендл;
финдПермутатионс (стр1, 0, сизе1-1);
стринг стр2 = "АБ";
инт сизе2 = стр2.сизе ();
цоут << "стр2:" << стр2 << ендл;
цоут << "Пермутације" << стр2 << ":" << ендл;
финдПермутатионс (стр2, 0, сизе2-1);
стринг стр3 = "КСИЗ";
инт сизе3 = стр3.сизе ();
цоут << "стр3:" << стр3 << ендл;
цоут << "Пермутације" << стр3 << ":" << ендл;
финдПермутатионс (стр3, 0, сизе3-1);
ретурн 0;
}

Оутпут:

стр1: МУО
Пермутације МУО:
МУО
МОУ
УМО
УОМ
ОУМ
ОМУ
стр2: АБ
Пермутације АБ:
АБ
БА
стр3: КСИЗ
Пермутације КСИЗ -а:
КСИЗ
КСЗИ
ИКСЗ
ИЗКС
ЗИКС
ЗКСИ

Повезан: Како проверити да ли је низ симетричан са програмирањем

Питхон програм за штампање свих пермутација низа

Затим, да ли је Питхон код за штампање свих пермутација низа:

# Питхон програм за штампање свих
# пермутације низа
деф цонвертТоСтринг (Листа):
ретурн '' .јоин (Лист)
# Функција за штампање пермутација низа
деф финдПермутатионс (с, лефтИндек, ригхтИндек):
иф лефтИндек == ригхтИндек:
принт (цонвертТоСтринг (с))
друго:
за и у опсегу (лефтИндек, ригхтИндек+1):
с [лефтИндек], с [и] = с [и], с [лефтИндек]
финдПермутатионс (с, лефтИндек+1, ригхтИндек)
# назад
с [лефтИндек], с [и] = с [и], с [лефтИндек]
# Код возача
стр1 = "МУО"
сизе1 = лен (стр1)
с1 = листа (стр1)
принт ("стр1:", стр1)
принт ("Пермутације", стр1, ":")
финдПермутатионс (с1, 0, сизе1-1)
стр2 = "АБ"
сизе2 = лен (стр2)
с2 = листа (стр2)
принт ("стр2:", стр2)
принт ("Пермутације", стр2, ":")
финдПермутатионс (с2, 0, сизе2-1)
стр3 = "КСИЗ"
сизе3 = лен (стр3)
с3 = листа (стр3)
принт ("стр3:", стр3)
принт ("Пермутације", стр3, ":")
финдПермутатионс (с3, 0, сизе3-1)

Оутпут:

стр1: МУО
Пермутације МУО:
МУО
МОУ
УМО
УОМ
ОУМ
ОМУ
стр2: АБ
Пермутације АБ:
АБ
БА
стр3: КСИЗ
Пермутације КСИЗ -а:
КСИЗ
КСЗИ
ИКСЗ
ИЗКС
ЗИКС
ЗКСИ

Повезан: Како проверити да ли су две жице међусобно анаграми

ЈаваСцрипт програм за штампање свих пермутација низа

Ево како штампате пермутације у ЈаваСцрипт -у:

// ЈаваСцрипт програм за штампање свих
// пермутације низа
// Функција за замену знакова низа
функција свап (стр, лефтИндек, и) {
лет темп;
лет темпАрраи = стр.сплит ("");
темп = темпАрраи [лефтИндек];
темпАрраи [лефтИндек] = темпАрраи [и];
темпАрраи [и] = темп;
ретурн (темпАрраи) .јоин ("");
}
// Функција за штампање пермутација низа
функција финдПермутатионс (стр, лефтИндек, ригхтИндек) {
иф (лефтИндек == ригхтИндек) {{100} {101}
доцумент.врите (стр + "
");
} елсе {
фор (нека је и = лефтИндек; и <= ригхтИндек; и ++) {
стр = свап (стр, лефтИндек, и);
финдПермутатионс (стр, лефтИндек+1, ригхтИндек);
//backtrack
стр = свап (стр, лефтИндек, и) ;;
}
}
}
// Код возача
вар стр1 = "МУО";
вар сизе1 = стр1.ленгтх;
доцумент.врите ("стр1:" + стр1 + "
");
доцумент.врите ("Пермутације" + стр1 + ":" + "
");
финдПермутатионс (стр1, 0, сизе1-1);
вар стр2 = "АБ";
вар сизе2 = стр2.ленгтх;
доцумент.врите ("стр2:" + стр2 + "
");
доцумент.врите ("Пермутације" + стр2 + ":" + "
");
финдПермутатионс (стр2, 0, сизе2-1);
вар стр3 = "КСИЗ";
вар сизе3 = стр3.ленгтх;
доцумент.врите ("стр3:" + стр3 + "
");
доцумент.врите ("Пермутације" + стр3 + ":" + "
");
финдПермутатионс (стр3, 0, сизе3-1);

Оутпут:

стр1: МУО
Пермутације МУО:
МУО
МОУ
УМО
УОМ
ОУМ
ОМУ
стр2: АБ
Пермутације АБ:
АБ
БА
стр3: КСИЗ
Пермутације КСИЗ -а:
КСИЗ
КСЗИ
ИКСЗ
ИЗКС
ЗИКС
ЗКСИ

Повезан: Како испунити ФиззБузз изазов на 5 програмских језика

Ц Програм за штампање свих пермутација низа

Испод је Ц програм који штампа све пермутације низа:

// Ц програм за штампање свих
// пермутације низа
#инцлуде
#инцлуде
// Функција за замену знакова низа
воид свап (цхар стр [], инт лефтИндек, инт и)
{
цхар темп = стр [лефтИндек];
стр [лефтИндек] = стр [и];
стр [и] = темп;
}
// Функција за штампање пермутација низа
воид финдПермутатионс (цхар стр [], инт лефтИндек, инт ригхтИндек)
{
иф (лефтИндек == ригхтИндек)
{
принтф ("%с \ нн", стр);
}
елсе
{
фор (инт и = лефтИндек; и <= ригхтИндек; и ++)
{
свап (стр, лефтИндек, и);
финдПермутатионс (стр, лефтИндек+1, ригхтИндек);
//backtrack
свап (стр, лефтИндек, и);
}
}
}
// Код возача
инт маин ()
{
цхар стр1 [] = "МУО";
инт сизе1 = стрлен (стр1);
принтф ("стр1: %с \ нн", стр1);
принтф ("Пермутације %с: \ ⁠н", стр1);
финдПермутатионс (стр1, 0, сизе1-1);
цхар стр2 [] = "АБ";
инт сизе2 = стрлен (стр2);
принтф ("стр2: %с \ нн", стр2);
принтф ("Пермутације %с: \ ⁠н", стр2);
финдПермутатионс (стр2, 0, сизе2-1);
цхар стр3 [] = "КСИЗ";
инт сизе3 = стрлен (стр3);
принтф ("стр3: %с \ нн", стр3);
принтф ("Пермутације %с: \ ⁠н", стр3);
финдПермутатионс (стр3, 0, сизе3-1);
ретурн 0;
}

Оутпут:

стр1: МУО
Пермутације МУО:
МУО
МОУ
УМО
УОМ
ОУМ
ОМУ
стр2: АБ
Пермутације АБ:
АБ
БА
стр3: КСИЗ
Пермутације КСИЗ -а:
КСИЗ
КСЗИ
ИКСЗ
ИЗКС
ЗИКС
ЗКСИ

Штампање пермутација је једноставно

У овом чланку сте научили како да одштампате све пермутације низа у неколико програмских језика. Иако ови узорци програма нису једини начин за руковање пермутацијама, они су одличан почетак за оне који их тек користе у свом коду.

ОбјавиТвеетЕмаил
11 најбољих локација за бесплатне курсеве програмирања на мрежи

Користећи ове бесплатне интернетске курсеве рачунарског програмирања, можете постати одличан кодер без дипломе рачунарства.

Прочитајте следеће

Повезане теме
  • Програмирање
  • Програмирање
  • Ц Програмирање
  • ЈаваСцрипт
  • Питхон
О аутору
Иуврај Цхандра (Објављено 58 чланака)

Иуврај је студент основних студија рачунарства на Универзитету у Делхију у Индији. Он је страствен за Фулл Стацк Веб Девелопмент. Кад не пише, истражује дубину различитих технологија.

Још од Иуврај Цхандра

Претплатите се на наш билтен

Придружите се нашем билтену за техничке савете, критике, бесплатне е -књиге и ексклузивне понуде!

Кликните овде да бисте се претплатили