c语言竞赛算法编程题目,跑步最高分算法(动态规划)-"奋斗杯"编程大赛题目 | 程序员灯塔...

跑步最高分算法(动态规划)-“奋斗杯”编程大赛题目

0、题目

1、思考

1.1 数组定义

1.2 初始化

1.3 状态转移

1.4 空间复杂度优化

2 代码实现

2.1 go语言实现

2.2 go语言空间复杂度优化实现

2.3 java实现

2.4 java空间复杂度优化实现

周末去参加了个“奋斗杯”上海市青年计算机程序设计大赛,水了个二等奖。这是其中一道题,因为时间不够没做出来,思路都对,差了一点就完成了。动态规划一直是我的弱项,趁此机会,把它记录下来。

0、题目

A同学参加一个跑步比赛,路径分为n段,每段有不同的分值。如果该段走路不得分;该段慢跑则得相应的分数;该段快跑则得对应分数的两倍,但下一段必须走路。求A同学跑完全程可以获得的最高分。

如总共有4段路, 对应的分值为 [1, 2, 3, 4] ,则最高分的跑法是,前三段慢跑,最后一段快跑,即 1+2+3+4*2 = 14 。

输入对应路段分值的数组,输出获得的最高分。

Golang

Java

1、思考

状态转移,经典的动态规划算法。

1.1 数组定义

定义二维数组 dp[i][j] ,

值为当前状态下可以获得的最高分;

i 为路段的索引;

j 为本段跑步状态,当 j=0 为走路,j=1 为慢跑,j=2 为快跑。

<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值