关注
第二题记忆化搜索package 秋招笔试.小红书0806.第2题;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
scanner.nextLine();
long[][] nums = new long[n][3];
int totalTime = scanner.nextInt(), totalEnergy = scanner.nextInt();
scanner.nextLine();
for (int i = 0; i < n; ++i) {
nums[i] = new long[]{scanner.nextLong(), scanner.nextLong(), scanner.nextLong()};
scanner.nextLine();
}
long[][][] dp = new long[501][501][nums.length];
for (long[][] d : dp)
for (long[] arr : d)
Arrays.fill(arr, -1);
long res = dfs(nums, totalTime, totalEnergy, 0, dp);
System.out.println(res);
}
private static long dfs(long[][] nums, int totalTime, int totalEnergy, int index, long[][][] dp) {
if (index == nums.length)
return 0;
if (dp[totalTime][totalEnergy][index] != -1)
return dp[totalTime][totalEnergy][index];
long pass = dfs(nums, totalTime, totalEnergy, index + 1, dp);
long choose = 0;
if (totalTime >= nums[index][0] && totalEnergy >= nums[index][1])
choose = dfs(nums, (int) (totalTime - nums[index][0]), (int) (totalEnergy - nums[index][1]), index + 1, dp) + nums[index][2];
return dp[totalTime][totalEnergy][index] = Math.max(pass, choose);
}
}
查看原帖
点赞 评论
相关推荐
牛客热帖
更多
正在热议
更多
# 找工作能把i人逼成什么样 #
16787次浏览 192人参与
# 上班到公司第一件事做什么? #
111434次浏览 764人参与
# 你今年做了几份实习? #
11339次浏览 165人参与
# 工作两年想退休了 #
205546次浏览 1822人参与
# 一上班就想____,这正常吗? #
6332次浏览 118人参与
# 七夕节你打算怎么过? #
69299次浏览 800人参与
# 运营面经 #
146300次浏览 1323人参与
# 参加过提前批的机械人,你们还参加秋招么 #
103963次浏览 1641人参与
# 如果公司降薪,你会跳槽吗? #
112603次浏览 729人参与
# 蚂蚁求职进展汇总 #
138968次浏览 1224人参与
# 运营商笔面经互助 #
189535次浏览 1795人参与
# 四大天坑是哪四家? #
91685次浏览 231人参与
# 网易求职进展汇总 #
169583次浏览 1414人参与
# 大厂面试初体验 #
84098次浏览 385人参与
# 什么样的公司千万别去 #
28601次浏览 151人参与
# 业务面应该做哪些准备 #
79491次浏览 814人参与
# 通信/硬件公司求职体验 #
178831次浏览 1025人参与
# 大学最后一个寒假,我想…… #
72702次浏览 730人参与
# 金三银四,你有感觉到吗 #
663551次浏览 6032人参与
# 大家每天通勤多久? #
64801次浏览 416人参与
