Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company;
- import java.util.Scanner;
- public class Problem {
- public static void main(String[] args){
- Scanner sc = new Scanner(System.in);
- int n = sc.nextInt();
- int[][] arr = new int[n][3];
- for(int i=0; i<n; i++){
- for(int j=0; j < 3; j++)
- arr[i][j] = sc.nextInt();
- }
- System.out.println(findMaxHappiness(arr, n));
- }
- static int[][] dp = new int[1001][3];
- public static int findMaxHappiness(int[][] arr, int n){
- for(int i=0; i < 1001 ; i++)
- for(int j=0; j < 3; j++)
- dp[i][j] = -1;
- return Math.max(fun(n, 0, arr), Math.max(fun(n, 1, arr), fun(n, 2, arr)));
- }
- public static int fun(int n, int last, int[][] arr){
- if(n == 0)
- return 0;
- if(dp[n][last] != -1)
- return dp[n][last];
- if(last == 0)
- return dp[n][last] = Math.max(fun(n-1, 1, arr) + arr[n-1][1], fun(n-1, 2, arr) + arr[n-1][2]);
- else if(last == 1)
- return dp[n][last] = Math.max(fun(n-1, 0, arr) + arr[n-1][0], fun(n-1, 2, arr) + arr[n-1][2]);
- else
- return dp[n][last] = Math.max(fun(n-1, 0, arr) + arr[n-1][0], fun(n-1, 1, arr) + arr[n-1][1]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement