Advertisement
saurav_kalsoor

Find Max Happiness - KOTLIN

Aug 8th, 2021
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 1.14 KB | None | 0 0
  1.  
  2. import java.util.*
  3.  
  4. fun main() {
  5.     val sc = Scanner(System.`in`)
  6.     val n = sc.nextInt()
  7.     val arr = Array(n) { IntArray(3) }
  8.    
  9.     for (i in 0 until n) {
  10.         for (j in 0..2)
  11.             arr[i][j] = sc.nextInt()
  12.     }
  13.     println(findMaxHappiness(arr, n))
  14. }
  15.  
  16. var dp = Array(1001) { IntArray(3) }
  17.  
  18. fun findMaxHappiness(arr: Array<IntArray>, n: Int): Int {
  19.     for (i in 0..1000)
  20.         for (j in 0..2)
  21.             dp[i][j] = -1
  22.     return Math.max(func(n, 0, arr), Math.max(func(n, 1, arr), func(n, 2, arr)))
  23. }
  24.  
  25. fun func(n: Int, last: Int, arr: Array<IntArray>): Int {
  26.     if (n == 0) return 0
  27.     if (dp[n][last] != -1)
  28.         return dp[n][last]
  29.     return when (last) {
  30.         0 -> Math.max(func(n - 1, 1, arr) + arr[n - 1][1], func(n - 1, 2, arr) + arr[n - 1][2]).also {
  31.             dp[n][last] = it
  32.         }
  33.         1 -> Math.max(func(n - 1, 0, arr) + arr[n - 1][0], func(n - 1, 2, arr) + arr[n - 1][2]).also {
  34.             dp[n][last] = it
  35.         }
  36.         else -> Math.max(func(n - 1, 0, arr) + arr[n - 1][0], func(n - 1, 1, arr) + arr[n - 1][1]).also {
  37.             dp[n][last] = it
  38.         }
  39.     }
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement