dp问题:采药

今天把采药A了,属于dp问题,主要思路是把所有时间都存进一个数组中,数组的值对应药的价值,下标是时间,然后记忆化搜索,碰到价值高的就赋值,相比于摘花生,辰辰是一个聪明的猴子,不废话了,上代码。

Code

#include <iostream>

#include <cstring>

using namespace std;

int ji[1002];

int main()  {

         int t,m,a,b,i,j;

         while(cin>>t>>m)

    {

                   memset(ji,0,sizeof(ji));

                   for(i=1;i<=m;i++)

                   {

                            cin>>a>>b;

                            if(t-a>=0)

            for(j=t-a;j>=0;j--)

             if(ji[j]+b>ji[j+a])

               ji[j+a]=ji[j]+b;

        }

                   cout<<ji[t]<<endl;

         }

         return 0;

 }

附带另一个问题,多多摘花生,这里不吐槽那猴子有多笨了,下面的数据足以说明;

2   8  8

6  0  0  0  0  0  0  0

0         0  0  0  0  0  0  8

那只猴子如果聪明的话能摘14个,笨蛋猴子只能摘8个。

Code

#include <iostream>

#include <cstdlib>

using namespace std;

int main()

{

        int n;

        int row, col;

        int time;

        cin >> n;

        while (n--)

        {

               cin >> row >> col >> time;

               int i, j;

               int curPi = 0, curPj;

               int p[51][51];

               int timet = 0;

               int pg = 0;

               for (i = 1; i <= row; i++)

               {

                       for (j = 1; j <= col; j++)

                       {

                               cin >> p[j];

                       }

               }

               int maxPi = 0, maxPj = 0;

               while (timet <= time)

               {

 

                       int max = 0;

                       for (i = 1; i <= row; i++)

                       {

                               for (j = 1; j <= col; j++)

                               {

                                      if (p[j] > max)

                                      {

                                              max = p[j];

                                              maxPi = i;

                                              maxPj = j;

                                      }

                               }

 

                       }

                       if (max == 0)

                               break;

                       if (curPi == 0)

                               curPj = maxPj;

                       if (timet +

                               (abs(maxPj - curPj) + abs(maxPi - curPi) + 1 + maxPi) <= time)

                       {

                               timet = timet + abs(maxPj - curPj) + abs(maxPi - curPi) + 1;

                               curPi = maxPi;

                               curPj = maxPj;

                               pg += p[curPi][curPj];

                               p[curPi][curPj] = 0;

                       }

                       else

                               break;

               }

               cout << pg << endl;

        }

        return 0;

 

}

代码还老长。。。。。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/382136.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

662. 二叉树最大宽度 golang

662. 二叉树最大宽度 给定一个二叉树&#xff0c;编写一个函数来获取这个树的最大宽度。树的宽度是所有层中的最大宽度。这个二叉树与满二叉树&#xff08;full binary tree&#xff09;结构相同&#xff0c;但一些节点为空。 每一层的宽度被定义为两个端点&#xff08;该层最…

传值的一点认识

今天又把C课本翻了一遍&#xff0c;发现了好多以前没彻底弄清楚的问题&#xff0c;比如说传值。说起传值&#xff0c;最先想到的恐怕是赋值&#xff0c;他是最基本的传值方式&#xff0c;不过有时候我们希望用另外的方式来传值。传值一共有三种方式&#xff0c;第一种是赋值&am…

递归经典例子

程序调用自身的编程技巧称为递归&#xff08; recursion&#xff09;。 一个过程或函数在其定义或说明中又直接或间接调用自身的一种方法&#xff0c;它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解&#xff0c;递归策略只需少量的程序就可描述出…

golang中的栈(LeetCode刷题)

栈的模拟&#xff08;LeetCode刷题用法&#xff09; func main() {stack : make([]string, 0)stack append(stack, "1" )stack append(stack, "2" )stack append(stack, "3" )fmt.Println(stack)stack stack[:len(stack)-1]fmt.Println(sta…

739. 每日温度 golang (list实现)

739. 每日温度 根据每日 气温 列表&#xff0c;请重新生成一个列表&#xff0c;对应位置的输出是需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高&#xff0c;请在该位置用 0 来代替。 例如&#xff0c;给定一个列表 temperatures [73, 74, 75, 71, 69, 72, …

openjudge基础题3计算书费

总时间限制: 1000ms内存限制: 65536kB描述下面是一个图书的单价表&#xff1a;计算概论 28.9 元/本数据结构与算法 32.7 元/本数字逻辑 45.6元/本C程序设计教程 78 元/本人工智能 35 元/本计算机体系结构 86.2 元/本编译原理 27.8元/本操作系统 43 元/本计算机网络 56 元/本JAV…

739. 每日温度 golang

739. 每日温度 根据每日 气温 列表&#xff0c;请重新生成一个列表&#xff0c;对应位置的输出是需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高&#xff0c;请在该位置用 0 来代替。 例如&#xff0c;给定一个列表 temperatures [73, 74, 75, 71, 69, 72, …

查找和排序的一点浅显认识

以前老是混淆各种排序的方法&#xff0c;对此我也感到十分苦恼&#xff0c;去网上搜索各种排序教程&#xff0c;结果收获颇微&#xff0c;就在期末考试时&#xff0c;我还担心会有排序的题&#xff08;事实证明我多虑了&#xff09;&#xff0c;不过作为算法的基本功&#xff0…

581. 最短无序连续子数组 golang

581. 最短无序连续子数组 给定一个整数数组&#xff0c;你需要寻找一个连续的子数组&#xff0c;如果对这个子数组进行升序排序&#xff0c;那么整个数组都会变为升序排序。 你找到的子数组应是最短的&#xff0c;请输出它的长度。 示例 1: 输入: [2, 6, 4, 8, 10, 9, 15] …

引用 看图英语作文万能模板

来源&#xff1a;新东方 2007-7-27 纵观历年的考研作文题&#xff0c;均为图画作文&#xff0c;鲜有图表作文&#xff0c;而现在考研作文的要求采用八股文的模式——命题者已经告诉你要去写什么、怎么写甚至于顺序都已经安排 好&#xff01;那么针对这么一个固化的考试模…

41. 缺失的第一个正数 golang

41. 缺失的第一个正数 给你一个未排序的整数数组&#xff0c;请你找出其中没有出现的最小的正整数。 示例 1: 输入: [1,2,0] 输出: 3 示例 2: 输入: [3,4,-1,1] 输出: 2 示例 3: 输入: [7,8,9,11,12] 输出: 1 Code 双百解法&#xff01;这个题据说今日头条出过&#xff0…

Android手机隐藏命令大全

Android手机隐藏命令大全&#xff0c;用之前要考 虑清楚尤其是涉及到格式化或者恢复出厂设 置类的&#xff01;注意&#xff1a;因Android版本较多&#xff0c;固有部分隐 藏命令或不能使用&#xff08;笔者用HTC legend测试 发现部分命令可用&#xff0c;比如*#*#4636#*#*&…

56. 合并区间 golang

56. 合并区间 给出一个区间的集合&#xff0c;请合并所有重叠的区间。 示例 1: 输入: [[1,3],[2,6],[8,10],[15,18]] 输出: [[1,6],[8,10],[15,18]] 解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6]. 示例 2: 输入: [[1,4],[4,5]] 输出: [[1,5]] 解释: 区间 [1,4] 和 …

忘记手势密码的解决办法

1.在输入密码的界面下方有个紧急呼叫按钮&#xff0c;点击进入紧急呼叫界面&#xff1b;2.输入*#*#7378423#*#*进入工程模式&#xff1b;3.依次选择customizationsettings--restcustomization--Resetcustomization and reboot,4.完成&#xff0c;自动重启&#xff01;呼呼&…

15. 三数之和 golang

15. 三数之和 给你一个包含 n 个整数的数组 nums&#xff0c;判断 nums 中是否存在三个元素 a&#xff0c;b&#xff0c;c &#xff0c;使得 a b c 0 &#xff1f;请你找出所有满足条件且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组。 示例&#xff…

云盘搜索找资料

自己平时经常看英剧美剧和电影&#xff0c;为 了寻找资源方便&#xff0c;陆续整理收集汇总 的各类搜索方法&#xff08;网站&#xff09;&#xff0c;现在分享 出来&#xff0c;感兴趣的可以看看~只要被上传到→百度云盘、360盘、 新浪微盘、115盘、华为盘、迅雷、 金山快盘等…

设计师必备的html工具

HTML 5已经成为Web开发者当中最流行的语言之一&#xff0c;“健壮的”语言有很大的生产优质万维网内容的能力。HTML 5在近三年的增长迅猛&#xff0c;新引入HTML 5的技术更加的优秀。HTML 5技术被现代浏览器所支持&#xff0c;如Chrome、Firefox、Internet Explorer等等。而今天…

42. 接雨水 golang

42. 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图&#xff0c;在这种情况下&#xff0c;可以接 6 个单位的雨水&#xff08;蓝色部分表…

257. 二叉树的所有路径 golang

257. 二叉树的所有路径 给定一个二叉树&#xff0c;返回所有从根节点到叶子节点的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 输入: 1/ \ 2 3\5输出: [“1->2->5”, “1->3”] 解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3 Code…

dp题目分类

动态规划一般可分为线性动规&#xff0c;区域动规&#xff0c;树形动规&#xff0c;背包动规四类。举例&#xff1a;线性动规&#xff1a;拦截导弹&#xff0c;合唱队形&#xff0c;挖地雷&#xff0c;建学校&#xff0c;剑客决斗等&#xff1b;区域动规&#xff1a;石子合并&a…