📋 Условие

Задание 22 посвящено параллельным процессам и работе с таблицами исполнителей. Необходимо определить время выполнения проекта по таблице предшествования.

🔍 Подробное решение

Задание 22 посвящено динамическому программированию. Необходимо определить количество программ, которые могут привести исполнителя к заданной цели, или максимальное значение результата.

Суть задания:

Исполнитель имеет набор команд с числовыми параметрами. Необходимо определить, сколько различных последовательностей команд приведут к заданному результату.

Решение — динамическое программирование:

```python
# Заполняем таблицу количества способов
dp = [0] * (max_result + 1)
dp[start] = 1

for i in range(start, max_result + 1):
for cmd in commands:
new_val = cmd(i)
if new_val <= max_result:
dp[new_val] += dp[i]
```

Или для максимального значения:

```python
dp = [-inf] * (max_result + 1)
dp[start] = start

for i in range(start, max_result + 1):
for cmd in commands:
new_val = cmd(i)
if new_val <= max_result:
dp[new_val] = max(dp[new_val], dp[i])
```

Каждый элемент таблицы показывает количество способов (или максимальное значение) достичь данной команды.

📚 Теория

Планирование процессов. Критический путь, зависимости.

📐 Формула

D = время + МАКС(время зависимых из D), Ответ = МАКС(D)