标题: 安卓手机屏幕锁一共有多少种方案 [打印本页]

作者: xueren    时间: 2013-7-13 00:31
标题: 安卓手机屏幕锁一共有多少种方案
    最近在学习编程,前段时间在中国电信参加存话费送手机的活动,得到一个安卓系统的手机。安卓手机启动的时候都有屏幕保护,其中有一项是屏幕锁。
   安卓系统的屏幕锁的核心是一个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。也就是说,这次跳点,跳过的是一个之前已经通过的点,这种方法是可行的。如下图的方案三和方案四。


基于上述两个条件,我编写了一个程序,由于自己没有学过算法方面的内容,我的计算方法非常复杂,代码非常多,但是总算把结果计算出来了。
     如果选取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)这是自己想出来的,感觉还挺美观,不过比较繁琐,喜欢的朋友可以试试。而实际上大多数用户喜欢使用下图蓝色的路径,这样的路径更加直观。单手都很容易划出正确的路径。




                                                                                            

                                                                                                                                                                                                                                                                                                                                                                                                                        

作者: smwn    时间: 2014-1-13 05:35
我的是7896只是为了放口袋里不误解
作者: gouxiantao    时间: 2015-5-9 11:12
太多了
作者: 李清波8    时间: 2019-3-6 22:36
一个点 9
两个点 (9*8)/(2*1)
三个点  ( 9*8*7)/(3*2*1)
四个点  (9*8*7*6)/(4*3*2*1)
······················
总共 9+(9*8)/(2*1)+( 9*8*7)/(3*2*1)* (9*8*7*6)/(4*3*2*1)+....................
j就是排列组合





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1