BIT算法作业四-贪心

本文探讨了哈夫曼编码的构造过程,并通过实例展示了其规律。同时,文章分析了贪心算法在01背包问题中的应用,证明了贪心选择性质。此外,还通过反例说明在最优装载问题中,简单的贪心策略并不适用,需要借助回溯法。最后,介绍了动态规划解决某特定问题的伪代码。
我不想写作业orz在这里插入图片描述
T1

 肯定打表找规律,画完哈夫曼树长这样。
在这里插入图片描述
于是哈夫曼编码如下。

  • a:a:a: 000000000000 000100010001
  • b:b:b: 000000000000 001001001
  • c:c:c: 000000000000 010101
  • d:d:d: 000000000000 111
  • e:e:e: 000100010001
  • f:f:f: 001001001
  • g:g:g: 010101
  • h:h:h: 111

然后拿眼找规律即可,对于数值是Fibonacci[i](从1开始)Fibonacci[i](从1开始)Fibonacci[i](1),其哈夫曼编码是
Codei={n−1个"0"i=1(n−i)个"0"+"1"i>1Code_i = \begin{cases} n-1个"0"&i=1\\ (n-i)个"0"+"1"&i>1 \end{cases}Codei={n1"0"(ni)"0"+"1"i=1i>1

T2

 肯定前面的物品更优,一直拿就是了。假设拿了第jjj件而没有拿第iii件,其中(i<j)(i <j)(i<j),那么肯定有Weighti<Weightj,Valuei>ValuejWeight_i < Weight_j,Value_i > Value_jWeighti<Weightj,Valuei>Valuej。此时我们将第jjj件拿出来换成第iii件,显然可以得到更多的价值和更多的容量,因此贪心选择性质得证。

T3

 不能,只能利用回溯法爆搜所有的装载顺序才能得到结果,若是还采用原来的策略,先PickPickPick最轻的塞进第一艘船然后再塞第二艘船感性理解上都不对。(话说最优装载问题是啥我都不知道,百度了一下才知道是价值全部为1的01背包
 直接举反例,两艘船C1=C2=4C_1=C_2=4C1=C2=4,四件物品重量1,2,2,31,2,2,31,2,2,3,按照原来的策略则第一艘船塞进了1,21,21,2,第二艘船塞进了222。显然应该1,31,31,32,22,22,2来分比较合理,有反例就不用证了

T4

神必的一批,看不太懂贪心,积化和到是网络流见过一次orz
洛谷P1249题解好吧,下面伪代码
forforfor i=1i =1i=1 tototo nnn dododo
  forforfor j=nj =nj=n tototo 111 dododo
    ififif dp[j−i]+ln(i)>dp[j]dp[j-i] +ln(i) > dp[j]dp[ji]+ln(i)>dp[j] thenthenthen
      dp[j]←(dp[j−i]+ln(i))dp[j] \leftarrow (dp[j-i]+ln(i))dp[j](dp[ji]+ln(i))
      choose[j]←(j−i)choose[j] \leftarrow (j-i)choose[j](ji)
    endifendifendif
  endendend forforfor
endendend forforfor
answer←1answer \leftarrow 1answer1
position←choose[n]position \leftarrow choose[n]positionchoose[n]
whilewhilewhile position>0position > 0position>0 dododo
  answer←answer⋅positionanswer \leftarrow answer \cdot positionansweranswerposition
  position←choose[position]position \leftarrow choose[position]positionchoose[position]
endendend whilewhilewhile

01背包时间复杂度O(n2)O(n^2)O(n2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值