博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
948. Bag of Tokens
阅读量:5081 次
发布时间:2019-06-12

本文共 987 字,大约阅读时间需要 3 分钟。

一开始觉得应该是个dp 题,把所有结果搜出来然后max 一下。实现以后发现组合太多了,非常慢,即使加上memorization 也是TLE

var hash = function(arr, p, s) {    arr = arr.sort();    return arr.reduce((p, c)=>p+"-"+c, "") + "_" + p + "_" + s;}let m = {};var iter = function(tokens, p, s) {    if (tokens.length == 0) return s;    let h = hash(tokens, p, s);    if (m[h] != void 0) return m[h];    let result = s;    for (let i = 0; i < tokens.length; ++i) {        //option1, if we have at leaset token[i] power        if (p >= tokens[i]) {            result = Math.max(result, iter(tokens.filter((x,k)=>k!=i), p-tokens[i], s+1));        }                //option2, if we have at least 1 point        if (s >= 1) {            result = Math.max(result, iter(tokens.filter((x,k)=>k!=i), p+tokens[i], s-1));        }    }    m[h] = Math.max(result, m[h]||0);    return result;}var bagOfTokensScore = function(tokens, P) {    return iter(tokens, P, 0);};

看了答案发现是用greedy,然而也没有证明为啥greedy 就是最优解。

转载于:https://www.cnblogs.com/agentgamer/p/10604479.html

你可能感兴趣的文章
互联网模式下我们更加应该“专注”
查看>>
myeclipse集成jdk、tomcat8、maven、svn
查看>>
查询消除重复行
查看>>
Win 10 文件浏览器无法打开
查看>>
HDU 1212 Big Number(C++ 大数取模)(java 大数类运用)
查看>>
-bash: xx: command not found 在有yum源情况下处理
查看>>
[leetcode]Minimum Path Sum
查看>>
内存管理 浅析 内存管理/内存优化技巧
查看>>
hiho1079 线段树区间改动离散化
查看>>
【BZOJ 5222】[Lydsy2017省队十连测]怪题
查看>>
第二次作业
查看>>
【input】 失去焦点时 显示默认值 focus blur ★★★★★
查看>>
Java跟Javac,package与import
查看>>
day-12 python实现简单线性回归和多元线性回归算法
查看>>
Json格式的字符串转换为正常显示的日期格式
查看>>
[转]使用 Razor 进行递归操作
查看>>
[转]Android xxx is not translated in yyy, zzz 的解决方法
查看>>
docker入门
查看>>
Android系统--输入系统(十一)Reader线程_简单处理
查看>>
监督学习模型分类 生成模型vs判别模型 概率模型vs非概率模型 参数模型vs非参数模型...
查看>>