![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 54
☆热带冰川☆
这个作者很懒,什么都没留下…
展开
-
回溯算法:0-1背包问题
回溯算法非常适合用递归来实现,在实现的过程中,剪枝操作是提高回溯效率的一种技巧。利用剪枝,我们并不需要穷举搜索所有的情况,从而提高搜索效率。回溯算法的核心思想就是:1:递归之前「做选择」;2:递归之后「撤销选择」。以下实例为0-1背包问题,背包承重极限是一定的,每个物体的价值都不一样,1、MaxWeight 函数不计算物体价值,挑选出背包承重极限以内最大承重的组合;2、WeightValue 函数则在满足背包承重极限的前提下,挑选出总价值最高的组合。#include <iostream原创 2021-04-01 22:55:14 · 662 阅读 · 0 评论 -
整数转换二进制, 高效使用位运算
整数转换二进制, 高效使用位运算将十进制数整数转换二进制的方法很多,但是很少有看到使用位运算的方法,我现在分享的方法便是利用C语言能够对位运算操作高效的特点。对于C语言来说,一个整数在内存里面就是以二进制的形式存储的,所以没有必要再将其经过一系列运算转换成二进制的形式,只要将整数在内存中的二进制表示输出即可。递归调用方法:// 这里使用无符号数作为形参,是为了避免有符号数右移时补符号位...原创 2018-11-04 17:08:49 · 1517 阅读 · 0 评论 -
九宫格拼图,避免不可还原
对于九宫格拼图,如果随机打乱的话,有50%的概率出现不可还原的情况。可以采用求逆序数的方法避免不可还原的情况。逆序数:即在一个数列中,按照从小到大的顺序排列则是顺序,如果有两个数违反了这一规则,即左边的数大于右边的数,那么这两个数就是一个逆序。例: 0, 3, 1, 2 这个数列中,(0,3),(0,1),(0,2)都是顺序,(3,1)是一个逆序,(3,2)是一个逆序,(1,2)是顺序,只有...原创 2018-12-02 19:25:35 · 10469 阅读 · 14 评论 -
暴力匹配、KMP、BM、Sunday算法,从入门到理解到彻底理解
转自:https://blog.csdn.net/gao506440410/article/details/81812163 看了好久的KMP没看懂,但是碰见大佬的博客,突然顿悟,给大家分享一下。原文:https://blog.csdn.net/v_july_v/article/details/7041827 &nbs...转载 2019-04-09 22:05:40 · 467 阅读 · 0 评论 -
C++ 大整数类(支持上亿个位的整数 '+'、'-'、'*'、'/'、'%'、'^' 计算实现)
C++ 大整数类(支持上亿个位的整数 '+'、'-'、'*'、'/'、'%'、'^' 计算实现)设计这个类的初衷,来自一次面试,第一个加数是1后面接一千个0,第二个加数是2后面接一千个0,描述这两个数相加的过程,而 int 类型的范围是-2147483648~2147483647,只能接9个0,unsigned long long int 类型也只能保存最大 184467440737095516...原创 2019-04-18 11:50:48 · 2700 阅读 · 1 评论