眾所周知,我國現有的銀行卡的密碼都是由6位數字組成,這樣就有000000-999999,一共是100萬種可能。所以,假如你的銀行卡丟了,被別人撿到,想通過試3次就解開密碼,這是一件概率極其低的事件。

【問題】現在假如你有一張銀行卡完全忘記了密碼,恰巧有台機器可以回答你提出關於銀行卡密碼的問題,但隻能回答你是或不是,在這樣的條件下,你想重新得到銀行卡密碼,你至少需要問多少個問題?
【知識準備】二分法
也稱為折半法,是一種在有序數組中查找某個特定元素的搜索方法。
也許你對上麵的這段話還不甚理解,我來舉一個例子,
一天你看到你朋友買了一部新手機,好奇價格,但你朋友隻告訴你價格在3000到5000元之間,讓你猜。
你肯定會先猜4000元,這個數字就把剛才的價格區間,攔腰分開為平均兩份,如果朋友告訴你價格低了,
那麽你就會猜4500元,這個數字就會將4000-5000的價格區間,又攔腰分開為平均兩份,
依此類推,你每猜一個價格,就相當於把價格區間減半,這樣不斷縮小手機價格所在的價格區間,最終就會得到手機的價格。
這就是我們生活中經常會遇到的二分法的應用場景,除了這些,二分法還會出現在計算機編程,數學計算,研究等各方麵。
二分法使用的次數與區間長度的研究:
比如我們要猜數字的結果是2
對於一個長為2的整數區間[1,2],我隻需要問一次,這個數比1大麽?你就可以確定這個具體數字,
對於一個長為4的整數區間[1,4],我需要詢問兩次,一次是這個數比2大麽?一次是這個數比1大麽?
對於一個長為8的整數區間[1,8],我需要詢問三次,一次是這個數比4大麽?第二次是這個數比2大麽?第三次這個數比1大麽?
依次類推,我們可以得到對於一個長度為L的整數區間,我們使用二分法的次數n,就滿足這樣的一個關係
【解答】
思路一:將密碼分成6個部分,分別在每一位上用二分法,進行尋找。
因為每一位的數字都是在0~9之間,一共有10 中可能,根據前麵的公式,最多隻需要猜4次就可以確定該數位上的數字了。
銀行卡密碼一共有6位數字,所以就需要24次。
思路二:將6位密碼看做是一個整體,數字從000000~999999,共100萬個數字。
通過計算可知:
根據前麵的公式,就可以知道
所以需要20次就可以了。
本文到此結束,希望對大家有所幫助呢。