二进制压缩 - 算法
二进制压缩
在编程时遇到每个数据只有两种状态,且 dfs 或者 bfs 时遍历时间复杂度高时,可以采用二进制压缩数据,尤其是二维数组。
1.二进制压缩一个二位数组
例如:
-+--
----
----
-+--正常保存数据回使用二位数组,'+' -> 1,'-' -> 0,即
0100
0000
0000
0100
如果我们采用二进制压缩为一个 int 类型的数据,正好用 16 位来表示。
这里有两种表示方法,其实都一样,一种先从上到下变为从高位到低位,一种是从上到下变为从低位到高位。
从低位到高位int input = 0;int[][] data = new int[4][4];Scanner sc = new Scanner(System.in);String line = "";for (int i = 0; i < 4; i++) {line = sc.next();for (int j = 0; j < 4; j++) {data[dataIn++] = line.charAt(j);}}for (int i = 0; i < 16; i++) {if (data[i] == '+') {input |= (1 << i);// System.out.println(Integer.toBinaryString(input));}}
从高位到低位int input = 0;Scanner sc = new Scanner(System.in);String line = "";for (int i = 0; i < 4; i++) {line = sc.next();for (int j = 0; j < 4; j++) {input = input << 1;input = line.charAt(i) == '+' ? input + 1 : input;}}
二进制压缩 - 算法相关推荐
- JavaScript实现floatAsBinaryString浮点转为二进制字符串算法(附完整源码)
JavaScript实现floatAsBinaryString浮点转为二进制字符串算法(附完整源码) floatAsBinaryString.js完整源代码 floatAsBinaryString.j ...
- Fliptile (二进制压缩)
题目链接:http://poj.org/problem?id=3279 题目大意:有一个n*m的棋盘,0表示白色,1表示黑色.每次可以翻转当前位置,它的上下左右四个位置也会被相应翻转.问最少翻转多少次 ...
- jzoj100044-abcd【多重背包,二进制压缩,dp】
正题 题目大意 给出长度为nnn的序列a,b,c,da,b,c,da,b,c,d 求一个序列eee满足 (∑i=1nei∗ci)=0(e∈[ai..bi])(\sum _{i=1}^ne_i*c_i) ...
- 【0-1背包】二进制灰狼算法解决0-1背包问题【Matlab】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.0-1背包问题 1.问题描述 2.数学模型 二 .二进制灰狼算法 1.引言 2.算法改进 3.数学模型 4.算法流程 三 ...
- 【选址问题】二进制灰狼算法解决无容量选址问题【Matlab】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.无容量设施选址问题 1.问题描述 2.数学模型 二.二进制灰狼算法 1.引言 2.算法改进 3.数学模型 4.算法流程 ...
- python:实现二进制补码算法(附完整源码)
python:实现二进制补码算法 def twos_complement(number: int) -> str:"""Take in a negative int ...
- java十进制转二进制简单算法
Java十进制转二进制简单算法 一.编程思路 可以运用简单的数学的计算的方法.如下 这张图大家应该都不陌生,10(例子中的10)一直除以2,余数写在右面那一列,如果被整除右面写0,如果没有别整除,写他 ...
- 利用从左到右二进制幂算法计算二进制的幂(霍纳法则升级版,变治法)
文章目录 题目描述 一.二进制幂的计算 二.题解 1.源代码 2.源程序测试 写在最后 题目描述 7.a.应用从左到右二进制幂算法来计算 a 17 a^{17} a17 本题目来源:<算法设计与 ...
- 解决全局优化和离散问题的二进制多宇宙算法
Binary multi‑verse optimization algorithm for global optimization and discrete problems 1.摘要 多宇宙算法已经 ...
最新文章
- 中国式姥姥上热搜感动无数人:有妈妈在,我才敢生娃
- 立体视觉动态测量技术
- 查询表空间是否是设置了自增
- scrapy安装出错
- filter vue 循环_vue v-for中使用filter筛选数据
- 【计蒜客 - 蓝桥训练】阶乘位数(数学,对数运算,求阶乘位数)
- 前端笔记-利用thymeleaf隐藏显示input及label
- Python 简单网页爬虫学习
- data的值 如何初始化vue_理解Vue响应式系统
- 百万数据php7取出循环_用php处理百万级以上的数据
- C/C++线程与多线程工作笔记0004---认识C中的线程和多线程
- 本硕一致计算机科学与技术专业介绍,哈尔滨理工大学计算机科学与技术专业介绍...
- 研发团队建设几点看法及建议
- DHCPv6技术介绍
- 【Linux】NUC977移植使用libmodbus
- 馈线中的VSWR电压驻波比
- Linux 编程 —— libstdc++.so.6: version `CXXABI_1.3.11‘ not found
- java横向导出excel_利用Java进行Excel的数据导入导出
- #今日论文推荐# 莫纳什大学最新《长文档摘要》综述,39页pdf长文档摘要的实证研究:数据集、模型和指标
- 谷粒商城九商品服务之商品属性及仓储服务todo
热门文章
- php利用wsh突破函数禁用执行命令(安全模式同理)
- 以管理创新推动零售企业ERP应用(转)
- Mac版本的Sublime Text常用快捷键
- 房地产—客户关系管理系统CRM|软件开发|软件外包|程序二次开发
- 车联网车载T-BOX系统解决方案
- PMP之项目质量管理---工具与技术
- MGRE、Tunnel、RIP、PPP综合实验
- python ug_一个python的UG二次开发简单例子(二)
- linux内核安装webkit,Ubuntu下安装基于WebKit 的网页浏览器Midori
- 【opencv】Face Detection using Haar Cascades