算法最后之战——动态规划

〔题目〕有如下四类人群:

第一类,一群18岁小学生,每个兜里揣着100元人民币;

第二类,一群22岁大学生,他们每人有220元零钱;

第三类,一群45岁中年大叔,各自有480元零钱;

第四类,一群79岁老年人,他们都有790元人民币;

川建国是个富二代,家大业大的败家子,现在他想在这四类人中抽取若干位参加烧钱晚会,要求抽取的这些人年龄总和不得超过500岁,且被抽取的人携带的人民币总量越大越好。如果是你,你会如何抽取?


这是典型的动态规划问题

设f[n][m]表示在第一类到第n类人中,年龄总和不超过m时所能携带的人民币最多时的值,

如f[4][500]表示,从第一类人到第四类人中,年龄综合不超过500时携带人民币总量的最大值。这也正好是题目要求。

则有:

f[4][500]=max(f[3][500],f[3][500-第四类人的年龄]+第四类人的钱),这便是状态转移方程

对于边界问题,即第一类人可以先初始化好。

(ฅ•﹏•ฅ)这便是用程序语言解题的思路。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 常用命令 查看当前路径: pwd 如果是第一次使用Git协议,则需要告诉Git:你是谁:git config -...
    遇见一只咩阅读 1,124评论 0 0
  • 一 问过你 男生是一个人睡还是两个人睡 你说 一个人睡 等以后有老婆了就两个人睡了 那时候不懂 还问会不会不习惯 ...
    象鼻儿鱼阅读 2,939评论 0 0
  • 2012年来丽江,美食之遗憾是没吃到云南的汽锅鸡和三文鱼,这个虽然不叫汽锅鸡,但也鲜美无比,服务的胖金妹超级专业、...
    三月暖阳2017阅读 1,079评论 0 0