https://stackoverflow.com/questions/18429021/why-is-infinity-0x3f3f3f3f
在算法競賽中,我們常常需要用到設置一個常量用來代表“無窮大”。
比如對於int類型的數,有的人會採用INT_MAX,即0x7fffffff作為無窮大。但是以INT_MAX為無窮大常常面臨一個問題,即加一個其他的數會溢出。
而這種情況在動態規劃,或者其他一些遞推的算法中常常出現,很有可能導致算法出問題。
所以在算法競賽中,我們常採用0x3f3f3f3f來作為無窮大。0x3f3f3f3f主要有如下好處:
0x3f3f3f3f的十進制為1061109567,和INT_MAX一個數量級,即109數量級,而一般場合下的數據都是小於109的。
0x3f3f3f3f * 2 = 2122219134,無窮大相加依然不會溢出。
可以使用memset(array, 0x3f, sizeof(array))來為數組設初值為0x3f3f3f3f,因為這個數的每個字節都是0x3f。
https://blog.csdn.net/qq_41376345/article/details/104103686