Хелпикс

Главная

Контакты

Случайная статья





global count. if valid(word): count += 1. return. rec( word+c, k, Alpha ). rec( , 3, ШКОЛА ). print( count ). return word.count('К') == 1. return word.count('К') == 1. if valid(word): return 1. return 0. count += rec( word+c, k, Al



global count

if len(word) == k:

if valid(word): count += 1

return

for c in Alpha:

rec( word+c, k, Alpha )

3) функция rec принимает три параметра: уже построенную часть слова word, заданную длину слов k и алфавит Alpha

4) если длина слова word равна k, слово полностью построено; проверяем его функцией valid, которая возвращает True, если слово подходящее;

5) если слово удовлетворяет требованиям, увеличиваем глобальную переменную count (счётчик подходящих слов)

6) если слово ещё не достроено (его длина меньше k) в цикле добавляем в конец слова по очереди все буквы из алфавита и вызываем процедуру rec рекурсивно

7) основная программа выглядит так:

count = 0

rec( "", 3, "ШКОЛА" )

print( count )

в начальный момент первый аргумент – пустая строка (ещё ни одна буква не выбрана)

8) функция valid в данной задаче должна проверять, верно ли, что слово содержит ровно одну букву К:

def valid( word ):

return word.count('К') == 1

конечно, в другой задаче функцию valid нужно изменить в соответствии с условием

9) Ответ: 48.

Решение (с помощью программы c функцией):

1) можно организовать рекурсивный перебор с помощью функции, которая будет возвращать количество найденных слов:

def valid( word ):

return word.count('К') == 1

def rec( word, k, Alpha ):

if len(word) == k:

if valid(word): return 1

return 0

count = 0

for c in Alpha:

count += rec( word+c, k, Alpha )

return count

print( rec( "", 3, "ШКОЛА" ) )

Домашнее задание.

1.

2.

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.