📋 Условие
Задание 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])
```
Каждый элемент таблицы показывает количество способов (или максимальное значение) достичь данной команды.
Суть задания:
Исполнитель имеет набор команд с числовыми параметрами. Необходимо определить, сколько различных последовательностей команд приведут к заданному результату.
Решение — динамическое программирование:
```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)