Есть система труб, которые имеют соединения в N узлах. Один узел S является источником, ещё один Т — стоком. Известны пропускные каждой трубы. Надо найти наибольший поток от источника к стоку.
Алгоритм действий машиниста для сортировки вагонов по путям с одинаковыми фруктами будет следующим:
1. Считаем количество вагонов с абрикосами, бананами и вишней на каждом пути. Для этого пройдемся по каждому пути и подсчитаем количество вагонов каждого фрукта. Инициализируем переменные a, b, c, которые будут хранить количество вагонов с абрикосами, бананами и вишней соответственно. Также создадим массивы fruits1, fruits2 и fruits3 для хранения порядка фруктов на каждом пути.
- Если ветки программы требуют объяснения, учителю следует объяснить их использование и необходимость для дальнейшего решения задачи.
2. Проверяем, есть ли фрукты, которых необходимо переместить. Сравниваем количество каждого фрукта на путях с общим количеством вагонов. Если какого-то фрукта нет на путях или его количество меньше общего количества вагонов, значит, нужно его переместить.
3. Если требуется переместить абрикосы:
- Если на пути 1 нет ни одного вагона с абрикосами, то нужно переместить все вагоны с абрикосами с других путей на путь 1. Для этого добавляем команду: "a 2 1", где a - количество вагонов с абрикосами, 2 - номер пути, с которого нужно переместить вагоны, 1 - номер пути, на который нужно переместить вагоны.
- Если на пути 2 нет ни одного вагона с абрикосами, а на пути 1 есть, то нужно переместить вагоны с пути 1 на путь 2. Для этого добавляем команду: "a 1 2".
- Если на пути 3 нет ни одного вагона с абрикосами, а на пути 1 и/или 2 есть, то нужно переместить вагоны с пути 1 и/или 2 на путь 3. Для этого добавляем команды: "a 1 3" и/или "a 2 3".
4. Если требуется переместить бананы и/или вишни, применяем аналогичные шаги для каждого фрукта.
5. Повторяем шаги 2-4 до тех пор, пока все фрукты не окажутся на одном пути.
6. В конце алгоритма добавляем команду "0 1 2" для перемещения всех вагонов с пути 1 на путь 2. Это необходимо, чтобы сформировать на каждом пути составы с одинаковыми фруктами.
Пример алгоритма для данной задачи:
a = количество вагонов с абрикосами
b = количество вагонов с бананами
c = количество вагонов с вишней
fruits1 = порядок фруктов на пути 1
fruits2 = порядок фруктов на пути 2
fruits3 = порядок фруктов на пути 3
Если a < общее количество вагонов или a = 0:
Если a = 0:
Добавить команду: "b 2 1"
Добавить команду: "c 3 1"
Иначе:
Если b = 0:
Добавить команду: "a 1 2"
Если c = 0:
Добавить команду: "a 1 3"
Иначе:
Добавить команду: "a 1 2"
Добавить команду: "c 3 2"
Иначе:
Если c = 0:
Добавить команду: "a 1 3"
Добавить команду: "b 2 3"
Иначе:
Добавить команду: "a 1 2"
Добавить команду: "b 1 3"
Добавить команду: "c 2 3"
Повторять шаги 2-4 пока a+b+c > общее количество вагонов:
Если b < общее количество вагонов или b = 0:
Если b = 0:
Добавить команду: "a 2 1"
Добавить команду: "c 3 1"
Иначе:
Если a = 0:
Добавить команду: "b 1 2"
Если c = 0:
Добавить команду: "b 1 3"
Иначе:
Добавить команду: "b 1 2"
Добавить команду: "c 3 2"
Иначе:
Если c = 0:
Добавить команду: "b 1 3"
Добавить команду: "a 2 3"
Иначе:
Добавить команду: "b 1 2"
Добавить команду: "a 1 3"
Добавить команду: "c 2 3"
Если c < общее количество вагонов или c = 0:
Если c = 0:
Добавить команду: "a 3 1"
Добавить команду: "b 2 1"
Иначе:
Если a = 0:
Добавить команду: "c 1 2"
Если b = 0:
Добавить команду: "c 1 3"
Иначе:
Добавить команду: "c 1 2"
Добавить команду: "b 2 3"
Иначе:
Если b = 0:
Добавить команду: "c 1 3"
Добавить команду: "a 3 2"
Иначе:
Добавить команду: "c 1 2"
Добавить команду: "a 1 3"
Добавить команду: "b 2 3"
// Внимание! Если программа не работает, обновите её версию!
begin
Writeln(' x x^2 x^3');
for var i:=1 to 50 do Writeln(i:3,i*i:5,i*i*i:8);
end.
Результат
x x^2 x^3
1 1 1
2 4 8
3 9 27
4 16 64
5 25 125
6 36 216
7 49 343
8 64 512
9 81 729
10 100 1000
11 121 1331
12 144 1728
13 169 2197
14 196 2744
15 225 3375
16 256 4096
17 289 4913
18 324 5832
19 361 6859
20 400 8000
21 441 9261
22 484 10648
23 529 12167
24 576 13824
25 625 15625
26 676 17576
27 729 19683
28 784 21952
29 841 24389
30 900 27000
31 961 29791
32 1024 32768
33 1089 35937
34 1156 39304
35 1225 42875
36 1296 46656
37 1369 50653
38 1444 54872
39 1521 59319
40 1600 64000
41 1681 68921
42 1764 74088
43 1849 79507
44 1936 85184
45 2025 91125
46 2116 97336
47 2209 103823
48 2304 110592
49 2401 117649
50 2500 125000
1. Считаем количество вагонов с абрикосами, бананами и вишней на каждом пути. Для этого пройдемся по каждому пути и подсчитаем количество вагонов каждого фрукта. Инициализируем переменные a, b, c, которые будут хранить количество вагонов с абрикосами, бананами и вишней соответственно. Также создадим массивы fruits1, fruits2 и fruits3 для хранения порядка фруктов на каждом пути.
- Если ветки программы требуют объяснения, учителю следует объяснить их использование и необходимость для дальнейшего решения задачи.
2. Проверяем, есть ли фрукты, которых необходимо переместить. Сравниваем количество каждого фрукта на путях с общим количеством вагонов. Если какого-то фрукта нет на путях или его количество меньше общего количества вагонов, значит, нужно его переместить.
3. Если требуется переместить абрикосы:
- Если на пути 1 нет ни одного вагона с абрикосами, то нужно переместить все вагоны с абрикосами с других путей на путь 1. Для этого добавляем команду: "a 2 1", где a - количество вагонов с абрикосами, 2 - номер пути, с которого нужно переместить вагоны, 1 - номер пути, на который нужно переместить вагоны.
- Если на пути 2 нет ни одного вагона с абрикосами, а на пути 1 есть, то нужно переместить вагоны с пути 1 на путь 2. Для этого добавляем команду: "a 1 2".
- Если на пути 3 нет ни одного вагона с абрикосами, а на пути 1 и/или 2 есть, то нужно переместить вагоны с пути 1 и/или 2 на путь 3. Для этого добавляем команды: "a 1 3" и/или "a 2 3".
4. Если требуется переместить бананы и/или вишни, применяем аналогичные шаги для каждого фрукта.
5. Повторяем шаги 2-4 до тех пор, пока все фрукты не окажутся на одном пути.
6. В конце алгоритма добавляем команду "0 1 2" для перемещения всех вагонов с пути 1 на путь 2. Это необходимо, чтобы сформировать на каждом пути составы с одинаковыми фруктами.
Пример алгоритма для данной задачи:
a = количество вагонов с абрикосами
b = количество вагонов с бананами
c = количество вагонов с вишней
fruits1 = порядок фруктов на пути 1
fruits2 = порядок фруктов на пути 2
fruits3 = порядок фруктов на пути 3
Если a < общее количество вагонов или a = 0:
Если a = 0:
Добавить команду: "b 2 1"
Добавить команду: "c 3 1"
Иначе:
Если b = 0:
Добавить команду: "a 1 2"
Если c = 0:
Добавить команду: "a 1 3"
Иначе:
Добавить команду: "a 1 2"
Добавить команду: "c 3 2"
Иначе:
Если c = 0:
Добавить команду: "a 1 3"
Добавить команду: "b 2 3"
Иначе:
Добавить команду: "a 1 2"
Добавить команду: "b 1 3"
Добавить команду: "c 2 3"
Повторять шаги 2-4 пока a+b+c > общее количество вагонов:
Если b < общее количество вагонов или b = 0:
Если b = 0:
Добавить команду: "a 2 1"
Добавить команду: "c 3 1"
Иначе:
Если a = 0:
Добавить команду: "b 1 2"
Если c = 0:
Добавить команду: "b 1 3"
Иначе:
Добавить команду: "b 1 2"
Добавить команду: "c 3 2"
Иначе:
Если c = 0:
Добавить команду: "b 1 3"
Добавить команду: "a 2 3"
Иначе:
Добавить команду: "b 1 2"
Добавить команду: "a 1 3"
Добавить команду: "c 2 3"
Если c < общее количество вагонов или c = 0:
Если c = 0:
Добавить команду: "a 3 1"
Добавить команду: "b 2 1"
Иначе:
Если a = 0:
Добавить команду: "c 1 2"
Если b = 0:
Добавить команду: "c 1 3"
Иначе:
Добавить команду: "c 1 2"
Добавить команду: "b 2 3"
Иначе:
Если b = 0:
Добавить команду: "c 1 3"
Добавить команду: "a 3 2"
Иначе:
Добавить команду: "c 1 2"
Добавить команду: "a 1 3"
Добавить команду: "b 2 3"
Добавить команду: "0 1 2"