poj1042

该博客主要介绍了POJ1042问题的解题思路。博主通过分析时间分为路上时间和钓鱼时间,提出了动态规划的解决方案。在每个池塘停留的时间取决于能钓到的最多鱼的数量,且不能返回已钓过的池塘。博主讨论了如何在多个解相等的情况下选择最优解,并给出了代码实现。同时,博主欢迎读者分享更好的解题方法。
摘要由CSDN通过智能技术生成

题目: http://poj.org/problem?id=1042

题解:时间可以分为两部分,一部分是在路上的时间,一部分是用于钓鱼的时间,花在路上的时间最多是从第一个池塘到最后一个池塘的时间,所以用总时间减去从第一个池塘到最后一个池塘路上的时间,就是用于钓鱼的时间,,,,要求可能调到的最多的鱼,首先求处从第一个池塘到第i个池塘能调到的最多的鱼。然后让i从0到n模拟,就是说分别求出从第一个池塘到第i,i+1,...n个池塘的最多的鱼。当没有鱼了或者时间不够了,退出循环,i向后加1。。。每次找剩余鱼最多的池塘进行钓鱼,然后重新在第一个池塘到第i个池塘中剩余最多的鱼的池塘进行钓鱼,可以求出在每个池塘停留的时间,也可以求出一共掉了多少鱼,因为路是单行路,所以不能返回去钓鱼,  假如现在求的是从第一个池塘到第二个池塘可以钓的最多的鱼,第一次池塘二的剩下的鱼多,然后在池塘二掉一次,然后再判断池塘一与池塘二哪个剩的鱼多,加入现在第一个池塘剩的鱼多,那么这次在池塘一钓鱼,,,但是不是说不能返回去钓鱼吗???  其实可以这样想,假如第一次在池塘二钓了3条鱼,然后在池塘一掉了2条鱼,那么当它途径第一个池塘的时候就可以先钓2条鱼,等到经过第二个池塘的时候再钓3条鱼。 细节就是每次要记录这次循环时 在每个池塘停留的时间,i循环,,然后如果找到比之前能钓到更多的鱼时,就要更新在池塘停留的时间,还有就是如果出现相等的解时,就看他们谁在第一个池塘停留的时间多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值