關於無窮大量的選擇

來源:互聯網
上載者:User

標籤:

    在解題時候,通常有遇到設定為無窮大的情況。這時候通常用0x7fffffff來設定,他是電腦32位整數最大數,相當於INT_MAX.但是在很多時候這樣設定並不會是最佳的,還可能導致bug,這是由於我們有的時候希望無窮大+無窮大=無窮大,比如在prim演算法或者Dijstra演算法中對邊的鬆弛操作,這個時候INT_MAX隨便加上一個數就會溢出,從而導致結果錯誤。

    事實上另外一個數字0x3f3f3f3f的十進位是1061109567,這與0x7fffffff是同一個數量級的。我們用0x3f3f3f來代替0x7fffffff可以滿足無窮大加無窮大依然是無窮大的條件,這樣可以避免災難性的錯誤。另外0x3f3f3f還可以使用memset函數批量賦值,例如要將數組dis[]設定為無窮大:              

memset(dis,0x3f,sizeof(dis));

如果數組dis是long long 型,則上面語句將dis設定為4557430888798830399,若dis為int型 ,則上面語句將dis設定為1061109567無論在long long還是int,兩個無窮的和都不會爆。上面的0x3f是一個位元組0x3f3f3f3f一共有四個這樣的位元組。一般情況下,0x3f3f3f3f是一個設定無窮的不錯選擇。             

關於無窮大量的選擇

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.