tut 16
This commit is contained in:
4
Tutorium/tut16/src/fibonnaci.py
Normal file
4
Tutorium/tut16/src/fibonnaci.py
Normal file
@ -0,0 +1,4 @@
|
||||
def fib(n: int) -> int:
|
||||
if n in {0, 1}:
|
||||
return n
|
||||
return fib(n - 1) + fib(n - 2)
|
17
Tutorium/tut16/src/knapsack.py
Normal file
17
Tutorium/tut16/src/knapsack.py
Normal file
@ -0,0 +1,17 @@
|
||||
import math
|
||||
|
||||
|
||||
def knapsack(items: list[tuple[float, float]], n: int, cap: float) -> float:
|
||||
if (cap < 0):
|
||||
return -math.inf
|
||||
if (n == len(items)):
|
||||
return 0
|
||||
|
||||
return max(
|
||||
knapsack(items, n + 1, cap),
|
||||
items[n][0] + knapsack(items, n + 1, cap - items[n][1])
|
||||
)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
print(knapsack([(100, 10), (70, 4), (50, 6), (10, 12)], 0, 12))
|
24
Tutorium/tut16/src/trees.py
Normal file
24
Tutorium/tut16/src/trees.py
Normal file
@ -0,0 +1,24 @@
|
||||
from dataclasses import dataclass
|
||||
from typing import Optional
|
||||
|
||||
|
||||
@dataclass
|
||||
class Node[T]:
|
||||
mark: T
|
||||
left: 'Optional[Node[T]]' = None
|
||||
right: 'Optional[Node[T]]' = None
|
||||
|
||||
|
||||
type Tree[T] = Optional[Node[T]]
|
||||
|
||||
|
||||
def insert[T](t: Tree[T], value: T) -> Tree[T]:
|
||||
if t is None:
|
||||
return Node(value)
|
||||
|
||||
if value < t.mark:
|
||||
t.left = insert(t.left, value)
|
||||
else:
|
||||
t.right = insert(t.right, value)
|
||||
|
||||
return t
|
Reference in New Issue
Block a user