二进制的匹配问题
来源:互联网 发布:斗鱼王师傅c语言视频 编辑:程序博客网 时间:2024/05/20 12:50
最近做了点搜索和背包的题目,发现这个二进制的匹配很是好用,所以写一篇二进制的匹配来作为自我总结;
首先我们要知道二进制的运算符,和他们的运算规则;
ABA&BA|BA^B00000010111001111110运算符有三种‘&’ , ‘|’ , ‘^' 或,且,异或,运算的规则在表中可以看到,想想这个规则我们可以做很多事情!
首先,每个十进制的数都会对应一个唯一的二进制,这样我们就可以用十进制的数化为二进制来匹配到你想得到的二进制数,然后在转化为十进制;
很绕口的说,举个简单例子,用二进制来匹配两个数的奇偶性;
比如:1,3和1,4这两组数据,将他们转化为2进制看看,0001,0011和0001,0100,如果对他们进行二进制的且运算很好发现1&3==1,1&4==0;
上述的例子只是判断奇偶性,其实运用二进制可以做很多事;
刚才在做poj2923,一道关于状态压缩的题,这道题的压缩就是用二进制来匹配,将所有的可能选择压缩到一个数组中,因为二进制只有01两种状态,所以判断是否排列组合
是不是一个绝好的方法,这道题就是这样用的,举个例子,15的二进制为1111,而16的二进制为10000;
这样的话,你就可以对应的选取方式,如果传递的参数为15,那么就是选取0,1,2,3这四种物品,而如果传递的参数是16,那就只选取4这一种物品,上面说过,每个十进制对应唯一的一个二进制,只要运行到2^n,这样就保证了所有的选取方式都会出现过!
还有一道题是一道搜索题问题大意是找钥匙开门,找到钥匙和门的匹配,如果有钥匙可以开门就能继续往下走,如果不能开门就需要先找到钥匙,这个与上述的类型是一样的,因为门是不一样的,所以对应的数字也不一样,所以是否有这个钥匙是需要将其转化为二进制来匹配,如果有匹配的结果为1,否则就没有!
先总结这些,以后遇到在补充!
- 二进制的匹配问题
- java--二进制字符串匹配的问题
- sunday 字符串匹配算法的实现(支持二进制匹配)
- java 二进制的问题
- 括号的匹配问题
- 模式匹配的问题
- springmvc 匹配'/'的问题
- springmvc 匹配'/'的问题
- 括号的匹配问题
- php+zend 的问题 二进制
- 二进制的一些小问题
- 背包问题的二进制优化
- 二进制负数的一些问题
- 背包问题的二进制优化
- 有趣的二进制手表问题。
- 实例分析Erlang二进制(Binary)匹配的内部机制
- 实例分析Erlang二进制(Binary)的匹配优化
- 正则-贪婪匹配(最大匹配) 和最小匹配的问题。
- 大数据算法处理
- asp.net MVC项目在(IIS5.1、IIS6.0、IIS7.5)上 部署
- 到底什么时候该用多线程
- 操作系统实验三之进程调度算法
- 笔记
- 二进制的匹配问题
- Create Regular Expression Objects (创建正则表达式对象)
- 6174 问题
- hdu 1083 匈牙利算法
- SONObject jsonObject=JSONObject.fromObject(map) 执行到这的时候没有任何反应,并且不报错
- 项目2 职员也有工资了
- nandflash的地址周期
- Wifi+亚马逊购物工具,疑问云云
- 在C++类中定义线程函数的方法