27.05.2022

Задача на перестановки (Паскаль, Permutations(N))

Задача. Алексей составляет 5-буквенные слова из букв М, А, Г, И, С, Т, Р. Каждую букву можно использовать не более одного раза, при этом в слове нельзя использовать более одной гласной. Сколько различных кодов может составить Алексей?

Задачу на перестановки букв слова АВРОРА мы решили с использованием метода Permutations и множеств. 

В данной же задаче проблема заключается в том, что длина слова меньше, чем используемый алфавит. Будем использовать метод Permutations с аргументом N, позволяющий брать N символов из набора.

Пример:

Получим все слова из двух букв перестановками букв слова КОТ.

В массиве с сохраним буквы слова КОТ. Получим массивы перестановок функцией c.Permutations(2).

Программа на языке Паскаль

var c,x:array of char; s:string; 

begin   

    c:=new char[3];  

    c[0]:='К'; c[1]:='О'; c[2]:='Т'; 

    foreach x in c.Permutations(2) do   

     begin     

      s:=x.JoinToString;

      println(s);

     end; 

end.

Результат запуска программы

Слова по 2 из КОТ

Решим задачу про "МАГИСТРА"

Сохраним буквы М, А, Г, И, С, Т, Р в массиве c. Получим все перестановки по 5 символов циклом  foreach x in c.Permutations(5) do. Получим строку оператором s:=x.JoinToString

Если суммарное количество гласных букв ('А' и 'И') меньше или равно 1, то увеличим счетчик искомых слов t на 1.

Программа решения задачи на языке Паскаль

var c,x:array of char; s:string; 

    t:integer;

begin   

    c:=new char[7];  

    c[0]:='М'; c[1]:='А'; c[2]:='Г'; 

    c[3]:='И'; c[4]:='С'; c[5]:='Т';

    c[6]:='Р';

    t:=0;

    foreach x in c.Permutations(5) do   

     begin     

      s:=x.JoinToString;

      if (s.CountOf('А')+s.CountOf('И'))<=1 then t+=1;

     end; 

    println(t);

end.

Ответ: 1320


Комментариев нет:

Отправить комментарий