当前位置: 首页 > news >正文

怎样做模具钢网站企业推广的网站

怎样做模具钢网站,企业推广的网站,动漫设计就业前景如何,毕业生 网站开发力扣刷题记录 dp 回溯 3180. 执行操作可获得的最大总奖励 I 思路 和往常一样,先使用暴力求解,想到了回溯算法,选择了当前数字,就跳到下一个数字,形成一个树形结构来遍历所有结果集合,但是没有找到优化算…

力扣刷题记录

dp 回溯

3180. 执行操作可获得的最大总奖励 I

思路

和往常一样,先使用暴力求解,想到了回溯算法,选择了当前数字,就跳到下一个数字,形成一个树形结构来遍历所有结果集合,但是没有找到优化算法,时间复杂度比较高
在这里插入图片描述
但是也可以通过90%的测试用例

没办法,只能思考动态规划的问题,没有想出来,查看题解
首先对数组进行排序
定义动态数组 dp[2 * max] , max表示最大的奖励数字
dp数组记录值为0或1,表示该下标的值是否能够被取到

最大的奖励数不可能超过2 * max,因此遍历奖励数组,当前值为x时,倒序k遍历 2 * x - 1到x,判断dp[k - x]是否可以取到,如果可以取到,那么dp[k]也可以达到,标记为1

最后遍历dp数组找到最大值即可

代码

var res int = 0func backTracking(rewardValues []int, curReward int, pos int){if curReward > res{res = curReward}if pos >= len(rewardValues){return}for i := pos; i < len(rewardValues); i++{if curReward < rewardValues[i]{curReward += rewardValues[i]backTracking(rewardValues, curReward, i + 1)curReward -= rewardValues[i]}}
}func maxTotalReward(rewardValues []int) int {sort.Ints(rewardValues)// res = 0// backTracking(rewardValues, 0, 0)max := rewardValues[len(rewardValues) - 1]dp := make([]int, 2 * max)dp[0] = 1for _, x := range rewardValues{for k := 2 * x - 1 ; k >= x ; k --{// k 表示能到达的最大总奖励if dp[k-x] == 1{dp[k] = 1}}}for i, val := range dp{if val == 1{res = i}}return res
}

不考虑排序算法的情况下
时间复杂度:O(n*max)
空间复杂度:O(max)

http://www.ds6.com.cn/news/108959.html

相关文章:

  • 淄博做网站站长分析工具
  • 免费设计网站素材搜索网络如何制造
  • 厦门市建设工程造价网站首页网络推广员工资多少钱
  • 湛江商城网站制作公司温州高端网站建设
  • 企业建设营销网站的基本步骤如何宣传网站
  • 烟台做网站公司太原首页推广
  • 邯郸手机网站开发价格百度推广seo怎么学
  • 网站制作哪些分类短信广告投放
  • 企业网站下载中国十大品牌营销策划公司
  • 免费做网站站标网络推广服务
  • 网站开发诺亚科技产品推广找哪家公司
  • 专业网站制作的地方靠谱的代运营公司有哪些
  • 快速建网站的软件aso优化app推广
  • 百度网站推广服务商爱站工具查询
  • 重庆企业网站制作外包百度灰色关键词代发
  • 做服装最好的网站建设深圳外贸推广公司
  • 企业做网站的步骤与做网站注意事项河北高端网站建设
  • 手机网站设计公司立找亿企邦传播易广告投放平台
  • wordpress分享统计插件seo外链发布
  • 建免费网站的步骤武汉seo收费
  • 从零开始做电影网站网络运营怎么学
  • 怎么做网页的搜索功能泉州seo
  • 做网页和网站一样吗正规职业技能培训机构
  • 宁波企业网站建设爱站网站
  • wordpress 网站 seo知名网站
  • 网站平台建设制度网络营销培训
  • 南通模板自助建站百度seo2022
  • 国内用什么做网站合肥seo排名优化
  • 网站设计 上海网络整合营销案例
  • 哪个网站做网络推好关键词权重查询