0x3f3f3f3fはどういう意味ですか? ? ?
What Does 0x3f3f3f3f Mean
私が最近問題解決の解決策を行っていたとき、私は大きな問題のレポートにしばしばそのような行があることに気づきました: ↓↓
const int inf = 0x3f3f3f3f
次に、調査に行きました。0x3f3f3f3fの小数は1061109567、つまり10 ^ 9レベルであり、一般的な場合のデータは10 ^ 9未満なので、データを無限大より大きくすることなく無限大として使用できます。
一般に、dfsまたはdpの問題の途中で、存在しない問題がいくつか発生します。私は通常、メソッドを使用して大きな値を返すので、最小値に達するとこれを取得できません。それは専門的な慣習ですか)、私はこの「非常に大きな値」を取るときに一般的に不可能な値を選択します。たとえば、最短パスを見つけるためのbfsは10000層のツリーであり、10005を取ります。
マクロは、考慮される時間を短縮するために0x3f3f3f3fを定義し、一般に、無限の数として使用できます。
他の誰かのブログから説明を引用してください:
0x3f3f3f3fは有用な値であり、次の2つの条件を満たす最大の整数です。
1、2倍の整数は0x7f7f7f7f、つまりintが表すことができる最大の正の整数を超えません。
2.整数の8ビットごと(各バイト)は同じです。
プログラム設計で配列aを初期化するには、memset(a、val、sizeof a)を使用する必要があることがよくあります。このステートメントは、値val(0x00〜0xFF)を配列aの各バイトに入力するため、memsetでのみ割り当てることができます。 「8ビットごとの整数は同じです」。
配列の値を正の無限大に初期化する必要がある場合、加算的な算術オーバーフローや面倒な判断を避けるために、memset(a、0x3f、sizeof(a))を使用して、代わりに0x3f3f3f3fの値を配列に割り当てることがよくあります。 。
これを参照することもできます: https://blog.csdn.net/jiange_zh/article/details/50198097