Leecode专题——回溯系列

专题Title题解备注
回溯77. CombinationsJava求组合
回溯 216. Combination Sum IIIJava组合问题
回溯 17. Letter Combinations of a Phone NumberJava求电话号码组合
回溯 39. Combination SumJava求组合总合
回溯 40. Combination Sum IIJava求组合总合II
回溯 131. Palindrome PartitioningJava分割回文串
回溯 93. Restore IP AddressesJava求合法IP
回溯 78. SubsetsJava求不重复组合子集
回溯 90. Subsets IIJava求不重复组合子集2
回溯 491. Increasing SubsequencesJava递增子序列
回溯 46. PermutationsJava全排列
回溯 47. Permutations IIJava不重复全排列
回溯 题号Java备注
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
0-1背包问题可以用回溯法求解,基本思路如下: 1.定义一个全局最优解变量max_value,从0开始; 2.定义一个当前解变量current_value,从0开始; 3.定义一个当前重量变量current_weight,从0开始; 4.定义一个当前物品编号变量current_item,从0开始; 5.定义一个当前物品选择情况数组choose,长度为物品数量,初始值全部为False; 6.定义一个回溯函数backtrack(current_weight, current_value, current_item, choose),其中: 1)如果当前重量超过背包容量,直接返回; 2)如果当前物品编号达到物品数量,更新全局最优解变量max_value,然后返回; 3)对于当前物品,分别考虑选或不选两种情况: a.如果选了当前物品,更新当前解变量current_value和当前重量变量current_weight,将当前物品选择情况数组choose中对应位置设为True,继续回溯; b.如果不选当前物品,直接继续回溯; c.回溯结束后,将当前物品选择情况数组choose中对应位置设回False,当前解变量current_value和当前重量变量current_weight回溯到上一层状态。 7.调用回溯函数backtrack(0, 0, 0, choose)。 8.返回全局最优解变量max_value。 需要注意的是,回溯法的时间复杂度非常高,当物品数量比较大时,可能会超时或者耗费大量的时间。因此,在实际应用中,通常会选择使用动态规划等更高效的算法来解决0-1背包问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值