最近在學習編程,前段時間在中國電信參加存話費送手機的活動,得到一個安卓系統的手機。安卓手機啟動的時候都有屏幕保護,其中有一項是屏幕鎖。
安卓系統的屏幕鎖的核心是一個3X3的點陣。一共九個點。用戶可以從這九個點上滑動,連接不同的點,形成一條路徑,這條路徑就是屏幕鎖的密碼。
對于手機鎖的設定,有兩個默認的規定,不知道大家有沒有發現。
1.一條路徑至少要包含4個點。這應該是出于對安全性的的考慮。如果只選取一個點,那么只有9種方案;如果只選取兩個點,共有56中方案;如果只選取三個點,共有320種方案。對于選取1,2,3個點,方案數都太少了,容易破解。
2,跳點是有條件的。何謂跳點?
如下圖的第一個方案,是錯誤的,不能從點1直接跳到點3, 因為從點1到點3的路徑上,經過了點2。如果強行從1到3,那么系統會在路徑上強行加入點2。方案一原本的路徑是(4,1,3,6)。但是強行從點1到點3,路徑就會變成(4,1,2,3,6)。類似(4,1,3,6)這種方案的,都是不行的,如下圖的方案二,從點1不能直接跳到點9。跳點不能跳過一個之前未經過的點。
但是如果你想從點1到點3,也是可行的,除非在從點1到點3之前,你的路徑上已經存在點2。也就是說,這次跳點,跳過的是一個之前已經通過的點,這種方法是可行的。如下圖的方案三和方案四。
1.JPG (40.54 KB, 下載次數: 120)
下載附件
2013-7-13 00:31 上傳
基于上述兩個條件,我編寫了一個程序,由于自己沒有學過算法方面的內容,我的計算方法非常復雜,代碼非常多,但是總算把結果計算出來了。
如果選取4個點,一共有 1 624種方案。
如果 選取5個點,一共有 7 152種方案。
如果選取6個點,一共有 26 016種方案。
如果選取7個點,一共有 72 912種方案。
如果選取8個點,一共 140 704種方案。
如果選取9個點,一共 140 704種方案。
累計上述,一共389 112種方案。沒錯,安卓手機屏幕鎖一共 389 112種方案。之前在網上也百度過,不同的人的都不同的結果,有牛人也編程算過一共389 112方案,他的程序非常簡潔,共30行代碼。我輩還不能理解其中之精髓,自己編寫的程序有120行代碼。這就是好的算法和差的算法之間的差異吧。由此產生了想好好學習算法的沖動。
最后,給使用安卓手機屏幕鎖的朋友一點建議。設置屏幕鎖的時候,如下圖所示,如果不想那么容易被別人破解,多選取從點1到點6這樣的紅色虛線表示的路徑,這樣的路徑一般比較隱秘,有一種方案是(1,6,7,2,9,4,3,8,5)這是自己想出來的,感覺還挺美觀,不過比較繁瑣,喜歡的朋友可以試試。而實際上大多數用戶喜歡使用下圖藍色的路徑,這樣的路徑更加直觀。單手都很容易劃出正確的路徑。
2.JPG (47.76 KB, 下載次數: 115)
下載附件
2013-7-13 00:31 上傳
|