【算法学习】高级班八

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
打表法:
在这里插入图片描述

  • 这道题直接用打表法无法实现。应该先用动态规化准备倒数两列和最后一行的值,才能填完所有格子
  • 不用管ei=*的格子,因为动态规划的分支中不判断 ∗ *
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

  • 暴力
    在这里插入图片描述
  • 优化
    在这里插入图片描述
    在这里插入图片描述
  • 前缀树
    在这里插入图片描述
    在这里插入图片描述
    贪心策略:
    对于无符号整数,构建一个前缀树,每个分支长度为32位,代表从0到i的前缀和结果,从最高处开始选择能让当前数字异或得1的分支。
    比如0110,走1011这个分支,得到1101,即为最大的异或。
    但如果有符号位,对于符号位,1希望遇到1,0希望遇到0。
    代码:
    在这里插入图片描述
  • 有两条路代表走向0或1
    在这里插入图片描述
  • max = Math.max(max, numTrie.maxXor(sum))中,前缀树存储的是0到k(k=0到i-1)的异或和,sum表示0到i的异或和,arr[0…i]^arr[0…k]=arr[k+1, i]的结果,因此numTrie.maxXor(sum)得到的是k+1到i的最大异或和,和上一轮的max(即以i-1结尾的最大异或子数组)比较
    在这里插入图片描述
    在这里插入图片描述
  • int path = ((num>>move)&1),依次取第i位的值
  • r e s ∣ = ( p a t h res|=(path res=(path^ b e s t ) < < m o v e best)<<move best)<<move优先级是 r e s ∣ = ( ( p a t h res|=((path res=((path^ b e s t ) < < m o v e ) best)<<move) best)<<move)

在这里插入图片描述
在这里插入图片描述

  • 这个题如果考虑以哪个气球先打爆做动态规化,会导致依赖混乱,不如考虑谁最后打爆
    主函数:
    在这里插入图片描述
    过程:
    在这里插入图片描述

在这里插入图片描述
汉诺塔问题分三步:
在这里插入图片描述
对于圆盘i,存在以下情况:
(1)i在from,则还在把1到i-1挪到to的步骤
(2)i在to,则在把i+1到L挪到to的状态
(3)i在other,-1,不存在
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值