// 要在回溯基础上加上贪心的想法,优先把可能的给功劳最大的 // 首先需要排好序的一个数组,数组中存放的就是原有功劳数组对应的下标, // 只不过这个数组是按照功劳大小排好序的, // 例如 [3,1,2,0] 的第一个3代表原有功劳数组中索引3位置处的功劳最大 // 这里省去排序的这一步,下面就是 arr1 为该数组,arr2 为功劳数组 // index 代表当前进行到第几个了,candies 代表剩余糖果数 let total = 0 function recurse(arr1, arr2, index, candies) { if (candies === 0) { total++ } if (index === arr1.length) { return } for (let i = candies; i >= 0; i--) { if (arr2[index] 位置处能放下 i 个糖果) { recurse(arr1, arr2, index + 1, candies - i) } } }
点赞 4

相关推荐

鼠鼠理解的 redis 的单线程:   是指Redis的网络IO和键值对读写是由一个线程来完成的 诸如持久化,异步操作,集群同步都是多线程 是这样吗,牛油们求指教 ave mujica 镇楼
ssp到手了的小白很想退休:针对响应客户端请求的过程是单线程完成,但Redis本身并不是单线程且在后续版本引入了多线程处理IO请求,特别是写请求
点赞 评论 收藏
分享
牛客网
牛客企业服务