字节跳动 8/18 笔试
第3题求助


n个事件,最大钻石数量m (1 <= n,m<= 1000)
每个事件有 x,y,z
有俩个选择
1 消耗 x钻石 获得 y金币
2 获得 z钻石
钻石数量超出m的部分会消失,最多拥有m个钻石
事件结束后,可以将钻石1比1换成金币
问最多能得到多少金币
#字节跳动##秋招##笔试##游戏##游戏客户端#
n个事件,最大钻石数量m (1 <= n,m<= 1000)
每个事件有 x,y,z
有俩个选择
1 消耗 x钻石 获得 y金币
2 获得 z钻石
钻石数量超出m的部分会消失,最多拥有m个钻石
事件结束后,可以将钻石1比1换成金币
问最多能得到多少金币
#字节跳动##秋招##笔试##游戏##游戏客户端#
全部评论
我直接存的每一个阶段所有的可能情况,按照宝石数量作为key值,能全过
记忆化两个参数:一个是当前是第几次操作,一个是当前手里的宝石数量。
然后dfs就行,边界是第n次操作,return 手里的宝石数。
第i次操作,就按他那两种策略每种走一条路径就好。
应该是多重背包模版题
相关推荐
查看4道真题和解析 点赞 评论 收藏
分享
球球与墩墩:这不是前端常考的对象扁平化吗,面试官像是前端出来的
const flattern = (obj) => {
const res = {};
const dfs = (curr, path) => {
if(typeof curr === 'object' && curr !== null) {
const isArray = Array.isArray(curr);
for(let key in curr) {
const newPath = path ? isArray ? `${path}[${key}]` : `${path}.${key}` : key;
dfs(curr[key], newPath);
}
} else {
res[path] = curr
}
}
dfs(obj);
return res;
}
查看3道真题和解析 点赞 评论 收藏
分享
查看7道真题和解析 点赞 评论 收藏
分享


