问题:

给定一个长度为N的一维数组
举例:输入:[1,3,5,2,1,9,4,3,7]
取数规则:不允许取连续的两个数
求:这个数组在给定规则下取到数字的最大和是?
本例中,答案为:1+5+9+7=22

解题思路

新建一个与输入数组input_num大小相同的数组max_num
记max_num[i]为前i+1天的最大训练天数(因为数组第一项是max_num[0])
max_num[0]=input_num[0]
max_num[1]=max(input_num[0],input_num[1])
当i>1,
max_nums[i]= max(max_nums[i-1],max_nums[i-2]+input_num[i])
从头到尾遍历计算max_nums,则最终max_nums中的最后一项即为所求

代码实现(python 2.7)

input_raw=raw_input('please enter the array(array):\n').split()
input_array= [int(i) for i in input_raw]
global max_num
max_num=[0 for i in range(len(input_array))]
max_num[0]=input_array[0]
max_num[1]=max(input_array[0],input_array[1])
global array
array=input_array
def max_train_time(i):if i<2:passelse:max_num[i]= max(max_num[i-1],max_num[i-2]+array[i])
for i in range(2,len(array)):max_train_time(i)
print 'The max training time is:\n',max_num[-1]

程序实例测试

此处假设输入数组长度不小于3,否则此问题无意义

#instance1
please enter the array(array):
1 3 1
The max training time is:
3
#instance2
please enter the array(array):
2 5 4
The max training time is:
6
#instance3
please enter the array(array):
1 3 5 2 1 9
The max training time is:
15
#instance4
please enter the array(array):
1 3 5 2 1 9 4 3 7
The max training time is:
22

动态规划实例--数组不连续取数问题(python 实现)相关推荐

  1. 数组随机取数(大乐透机选投注)

    闲着没事写着完呢 package com.yjl.daletou.util;import java.awt.Color; import java.awt.Dimension; import java. ...

  2. 【动态规划】P1004 方格取数(四维dp模板题)

    与传纸条方法相同! 用f[i][j][k][l]表示第一个人走到(i,j),第二个人走到(k,l)的最优解 我们考虑两个人同时走,就相当于数字三角形. 状态转移方程为: f[i][j][k][l]=m ...

  3. python数组取数_python 取数组

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 在python中计算一个多维数组的任意百分比分位数,只需用np.percenti ...

  4. python二维数组表示_python中二维数组中的数如何表达

    python二维数组如何挑选出一定范围的数值? 比如说有一个二维数组 13.1 13.2 13.3 13.4 15.5 15.0 45.2 22.3 22.3 3 [j for i in a for ...

  5. 【每日DP】day 10、P1005 矩阵取数游戏【区间DP+高精(python)】难度⭐⭐⭐★

    P1005 矩阵取数游戏 输入 2 3 1 2 3 3 4 2 输出 82 说明/提示 NOIP 2007 提高第三题. 数据范围: 60%60\%60% 的数据满足:1≤n,m≤301\le n,m ...

  6. 矩阵取数游戏(动态规划)

    小明经常玩一个矩阵取数游戏:对于一个给定的n x n的矩阵,矩阵中的每个元素aij表示该格子的价值,均为非负整数.游戏规则如下: 小明从左上角走到右下角,只能向下向右走,经过某个格子,就能获得格子相应 ...

  7. python中numpy数组的合并_基于Python中numpy数组的合并实例讲解

    基于Python中numpy数组的合并实例讲解 Python中numpy数组的合并有很多方法,如 - np.append() - np.concatenate() - np.stack() - np. ...

  8. python如何将数组里的数提取出来_python [:3] 实现提取数组中的数

    搜索答案搜索不到,自己试了一把. 首先生成一维数组 a =np.array([1,2,3,4,5,6,7,8,9]) >>> print a [1 2 3 4 5 6 7 8 9] ...

  9. python读取二维数组的行列数_Python获取二维数组的行列数的2种方法

    Python获取二维数组的行列数的2种方法 这篇文章主要介绍了Python获取二维数组的行列数的2种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考 ...

  10. 用Python轻松开发数据库取数下载工具

    ❝ 本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes ❞ 1 简介 这是我的系列教程「Python+Dash ...

最新文章

  1. JQuery中全局变量和局部变量的理解
  2. xp下 opensuse12.3 制作可启动U盘 (用U盘安装opensesu12.3)
  3. 健身环爆打老头环!超高难度击败boss,宫崎英高估计也想不到,代码+硬件教程已开源...
  4. 不要再问我“Java GC垃圾回收机制”了
  5. 网站排名和权重骤降的原因是什么?又该如何处理?
  6. Dell服务器Ubuntu 18.04 双显卡(2080ti)搭建深度学习环境(CUDA 10.1/cuDNN 7.6/Tensorflow 1.14).md...
  7. 电压放大倍数公式运放_运放电路:同相放大还是反相放大?
  8. 服务器多路径 映射分区找不到,设备映射多路径DM-Multipath
  9. html5中地理位置,Chrome中的HTML 5地理位置提示
  10. 测试视频软件支持的格式,支持82种视频格式!电视平台最强的本地播放器!
  11. 数据结构 停车场管理系统
  12. android toast 自定义view,分享Android中Toast的自定义使用
  13. 刘宇凡:我眼中的SEO思维
  14. Blender学习-考拉课程学习记录
  15. 企业邮箱品牌哪家好?四大品牌企业邮箱推荐
  16. 什么是UI设计,深入了解UI
  17. Bootstrap系列之模态框(Modal)
  18. 软件测试面试题:WEB+网络|接口测试|性能测试|自动化测试
  19. 点星PBX(DotAsterisk)单台讯时MX100G-4E1数字中继网关同时混合接入电信、移动双运营商线路教程
  20. Android圆形头像图Circle ImageView

热门文章

  1. UEFI开发编程汇总 (持续更新)
  2. python半圆,(小小黑科技)vue+echarts实现半圆图表
  3. 算法之路-圆柱体面积
  4. c语言编程情话,c语言浪漫情话
  5. 腾讯WeTestTesterHome深圳线下沙龙
  6. 个人银行账户管理程序【简化】
  7. centos linux系统日志分析,CentOS 7日志分析详解【二】
  8. Perl 6 - CPAN
  9. 统计推断——假设检验——简单线性回归分析
  10. 日本多城现共享单车 日网友:感受到中国式刺激