Треба да одштампате пермутације низа? Показаћемо вам како на неколико језика.
Пермутација је распоред објеката одређеним редоследом. Можете пермутирати низ дужине н у н! начина.
У овом чланку ћете научити како пронаћи све пермутације датог низа користећи Ц ++, Питхон, ЈаваСцрипт и Ц.
Како функционишу пермутације?
Рецимо да имате жицу стр са „МУО“ као вредности низа. Од вас је затражено да прикажете пермутације низа. Ево како бисте поступили:
Пример 1: Нека стр = "МУО"
Пермутације „МУО“ су:
- „МУО“
- "МОУ"
- „УМО“
- „УОМ“
- „ОУМ“
- “ОМУ”
Обратите пажњу на редослед вредности. Ево још једног примера:
Пример 2: Нека је стр = "АБ"
Све пермутације „АБ“ су:
- „АБ“
- „БА“
Такође можете одштампати дупле пермутације ако се у датом низу појављују знакови који се понављају. (АББА, на пример)
Сада када разумете како пермутације функционишу, погледајмо како их можете пронаћи помоћу жељеног програмског језика.
Белешка: Дизајнирали смо следеће примере кода за испис пермутација за три низа: МУО, АБ и КСИЗ. Ако желите да користите било који од ових кодова, копирајте их и промените ове низове тако да одговарају вашем пројекту.
Повезан: Како програмирањем претворити знакове низа у супротни случај
Ц ++ програм за штампање свих пермутација низа
Испод је Ц ++ програм за штампање свих пермутација низа:
// Ц ++ програм за штампање свих
// пермутације низа
#инцлуде
коришћење простора имена стд;
// Функција за штампање пермутација низа
воид финдПермутатионс (стринг стр, инт лефтИндек, инт ригхтИндек)
{
иф (лефтИндек == ригхтИндек)
{
цоут << стр << ендл;
}
елсе
{
фор (инт и = лефтИндек; и <= ригхтИндек; и ++)
{
свап (стр [лефтИндек], стр [и]);
финдПермутатионс (стр, лефтИндек+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: КСИЗ
Пермутације КСИЗ -а:
КСИЗ
КСЗИ
ИКСЗ
ИЗКС
ЗИКС
ЗКСИ
Штампање пермутација је једноставно
У овом чланку сте научили како да одштампате све пермутације низа у неколико програмских језика. Иако ови узорци програма нису једини начин за руковање пермутацијама, они су одличан почетак за оне који их тек користе у свом коду.
Користећи ове бесплатне интернетске курсеве рачунарског програмирања, можете постати одличан кодер без дипломе рачунарства.
Прочитајте следеће
- Програмирање
- Програмирање
- Ц Програмирање
- ЈаваСцрипт
- Питхон
Иуврај је студент основних студија рачунарства на Универзитету у Делхију у Индији. Он је страствен за Фулл Стацк Веб Девелопмент. Кад не пише, истражује дубину различитих технологија.
Претплатите се на наш билтен
Придружите се нашем билтену за техничке савете, критике, бесплатне е -књиге и ексклузивне понуде!
Кликните овде да бисте се претплатили