摘要: 在刚接触这道题的时候,确实无从下手,因为我记得高老师说过01背包算法并不是一个好算法,时间复杂度是指数级。这题容量为实数时,更是无法直接解决。参考了一下别人的思路,发现原来可以把银行总存款作为背包容量,把被抓率转换成逃脱率(即1-被抓率)作为背包物件的价值,进行动态01决策。求出比最低逃脱率大的第一个逃脱率,这时的偷得的存款即为最大可偷的存款。代码如下://以总资产为容量,以逃脱率为价值,DP求出第一个比最低逃脱率大的最大偷钱数目#include <stdio.h>#define M 100050#define N 150double C[M],r[N];//r[N]为逃脱率,w[ 阅读全文
posted @ 2011-08-02 21:03 Veegin 阅读(536) 评论(0) 推荐(0) 编辑