无穷大值∞的问题
在算法题中,经常用到∞作为值,而C/C++是没有无穷大值的,之前是模仿网上一些代码,将INF设为0x7fffffff,这是32-bit int 的最大值214748367
1 | print(0x7fffffff) |
不过这就带来一个问题,这个INF值加一个数后,会造成溢出变成负数,不能满足“无穷大加一个有穷的数依然是无穷大”这个条件
这个时候可以采用0x3f3f3f3f,同样是10^9级别的数,而且0x3f3f3f3f+0x3f3f3f3f=2122219134,这非常大但却没有超过32-bit int的表示范围,所以0x3f3f3f3f还满足“无穷大加无穷大还是无穷大”
这个数最好的地方还是在于它的每个字节都是0x3f,可以用
1 | memset(a, 0x3f, sizeof(a)); |
快速将数组全部设为无穷大
P.S. Python中无穷大可用float(‘inf’)表示