对于无穷大0x3f3f3f3f的选择

简介: 对于无穷大0x3f3f3f3f的选择

在算法竞赛中,我们常常需要用到设置一个常量用来代表“无穷大”。


一般会有两个选择:0x7fffffff和0x3f3f3f3f


比如对于int类型的数,有的人会采用INT_MAX,即0x7fffffff作为无穷大。但是以INT_MAX为无穷大常常面临一个问题,即加一个其他的数会溢出。


而这种情况在动态规划,或者其他一些递推的算法中常常出现,很有可能导致算法出问题。


下面来看看到底如何进行选择


0x7fffffff


首先了解数字的含义,"0x"是一个前缀,表示十六进制。


而"7"在二进制中是7的二进制码为 0111,f是指1111。


这样, 0x7FFFFFFF 的二进制表示就是除了符号位是 0表示正数,其余都是1。


对于int而言,0x7fffffff是最大的数值。


所以可以把需要比较的无穷大设为0x7fffffff再进行比较。


0x3f3f3f3f


0x3f3f3f3f的十进制为1061109567,和INT_MAX一个数量级,即10^9数量级,


而一般场合下的数据都是小于10^9的。


0x3f3f3f3f的数值为1061109567,它的两倍也只有2122219134,不会溢出。


这样就有一个好处,当两个无穷大相加的时候可以使int型整数不溢出,并使数值仍为无穷大。


而使用0x3f3f3f3f在对于数组初始化的时候也比较方便,一般数组批量赋值时会使用memset函数,如果想将一个数组全部定义为"无穷大"的0x3f3f3f3f,因为memset函数是对字节进行操作,而0x3f3f3f3f的每个字节都是0x3f,所以可以直接定义为memset(array, 0x3f, sizeof(array))


在java中使用Arrays.fill(arr,0x3f3f3f3f);


相关文章
|
中间件 数据库连接 API
Python面试:FastAPI框架原理与实战
【4月更文挑战第18天】FastAPI是受欢迎的高性能Python Web框架,以其简洁的API设计、强大的类型提示和优秀的文档生成能力著称。本文将探讨FastAPI面试中的常见问题,包括路由、响应对象、Pydantic模型、数据库操作、中间件和错误处理。同时,还会指出一些易错点,如类型提示不准确、依赖注入误解,并提供实战代码示例。通过理解和实践FastAPI,可以在面试中展示出色的Web开发技能。
690 1
|
存储 Kubernetes 监控
如何管理越来越多的 operator?OLM 给你答案
OLM(Operator Lifecycle Manager) 作为 Operator Framework 的一部分,可以帮助用户进行 Operator 的自动安装,升级及其生命周期的管理。同时 OLM 自身也是以 Operator 的形式进行安装部署。本文我们将来了解一下 OLM 的基本架构和安装使用。
如何管理越来越多的 operator?OLM 给你答案
|
7月前
|
机器学习/深度学习 供应链 数据可视化
增强现实,让物流与仓储更智能!
增强现实,让物流与仓储更智能!
211 4
|
存储 监控 数据挖掘
使用 Meltano 将数据从 Snowflake 导入到 Elasticsearch:开发者之旅
【6月更文挑战第9天】Meltano,一个开源数据集成框架,简化了从Snowflake到Elasticsearch的数据迁移。这个工具支持多种数据源,提供易于配置的界面。要开始,需安装Meltano并配置连接信息。一个简单的YAML示例展示了如何定义从Snowflake到Elasticsearch的迁移任务。Meltano自动执行迁移,同时提供监控和日志功能。借助Meltano,用户能高效集成数据,提升搜索和分析能力,适应不断增长的数据需求和挑战。
305 6
|
关系型数据库 MySQL Linux
Linux 安装 mysql【使用yum源进行安装】
这篇文章介绍了在Linux系统中使用yum源安装MySQL数据库的步骤,包括配置yum源、安装MySQL服务、启动服务以及修改root用户的默认密码。
Linux 安装 mysql【使用yum源进行安装】
|
机器学习/深度学习 算法
深度学习之因果发现算法
基于深度学习的因果发现算法是一个旨在从复杂数据中自动挖掘变量之间潜在因果关系的研究领域。它结合了传统因果推理方法与深度学习的强大特征提取能力,帮助应对高维、非线性数据中的因果结构发现。
1138 9
|
数据采集 自然语言处理 监控
阿里云百炼知识检索应用测评
阿里云百炼知识检索应用测评
|
编解码 人工智能 语音技术
GPT-SoVits:刚上线两天就获得了1.4k star的开源声音克隆项目!效果炸裂的跨语言音色克隆模型!
GPT-SoVits:刚上线两天就获得了1.4k star的开源声音克隆项目!效果炸裂的跨语言音色克隆模型!
1715 3
|
安全 网络安全 数据安全/隐私保护
成功解决:java: 无效的目标发行版: 17
这篇文章讲述了如何解决在启动SpringBoot项目时遇到的"无效的目标发行版: 17"的问题,主要是通过修改IDEA内置的编译设置,确保它使用正确的JDK版本。

热门文章

最新文章