/** * Beispiel aus * * - Algorithmen und Datenstrukturen für Dummies * - von Andreas Gogol-Döring und Thomas Letschert * - Verlag Wiley-VCH; Oktober 2019 * - Kapitel 13, Dynamisches Programmieren * * @author A. Gogol-Döring, Th. Letschert */ import Foundation struct AuD_13_08_MinDP { static func min_1(_ a: [Int]) -> Int { let n = a.count var mins: [Int] = [Int](repeating: Int.max, count: n) mins[0] = a[0] if n > 1 { for i in 1 ..< n { mins[i] = min(mins[i - 1], a[i]) } } return mins[n-1] } static func min_2(_ a: [Int]) -> Int { let n = a.count var m = a[0] if n > 1 { for i in 1 ..< n { m = min(m, a[i]) } } return m } static let a = [3, 4, 8, 5, 1, 0, 3, 2, 4, 5, 7] static func run () { print(min_1(a)) // 0 print(min_2(a)) // 0 } }