找回密码
 欢迎注册
查看: 59663|回复: 29

[提问] 关于android手机图案锁屏的计数

[复制链接]
发表于 2013-6-14 10:11:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
应该有不少人知道android手机有一个图案锁屏的功能。 3×3的格子,一笔画,至少经过4个点,路径中重复经过的点不算入组成图案的有效的点集合,最终构成的一个图案 就可以锁屏了,注意还有方向哦~~ 33.png 那么,这样的锁屏方式总共有多少种呢 ======= 推广一下,要是n*n呢,一笔画 经历所有的点,有多少种?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2013-6-14 11:48:06 | 显示全部楼层
不是P(9,4)+P(9,5)+P(9,6)+P(9,7)+P(9,8)+P(9,9)?

评分

参与人数 1金币 +2 鲜花 +2 收起 理由
wayne + 2 + 2 应该小于这个数目,:)

查看全部评分

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2013-6-14 12:17:42 | 显示全部楼层
实不相瞒,我是在搜索 android图案锁屏 破解攻略的时候,顺带提出这个问题的。 来源:http://www.nfcous.com/?p=879
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2013-6-14 12:32:03 | 显示全部楼层
2# hujunhua
不对,老大,真实的答案应该比排列数要小很多的。

==========================
反例:假设我们将左上角的点标注(1,1),向左向右坐标点递增, 那么不存在这样的4点的情况有很多,比如:

(1,1) -> (3,3) -> (1,3) -> (3,1)  (实质 是6个点,(1,1) ->(2,2)-> (3,3) ->(3,2)-> (1,3) -> (3,1))
(1,1) -> (3,3) ->(2,2) -> (1,3)   (这个不是一笔画)
(1,1) -> (1,3) ->(1,2) -> (3,3)   (这个也不是一笔画)
......

简而言之,就是多点共线的情形比较复杂:
1) 不能越过途中未标记的点,去标记新一点。
2) 每经历一个点,下一个点只可能是未标记的点,而不是已标记的点。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2013-6-15 15:01:36 | 显示全部楼层
写了个程序,算出来得到:
{经过的点数,排列数,实际有效的一笔画种数}
{1, 9, 9},
{2, 72, 56},
{3, 504, 320}
{4,3024,1624},
{5,15120,7152},
{6,60480,26016},
{7,181440,72912},
{8,362880,140704},
{9,362880,140704}
  1. PointsToBeChecked[{{a_,b_},{c_,d_}}]:=Module[{g=GCD[c-a,d-b]},If[g>1,{a+# (c-a)/g,b+# (d-b)/g}&/@Range[g-1],{}]];
  2. CountOfPath[n_,k_]:=Module[{pp=Permutations[Flatten[Array[List,{n,n}]-1,1],{k}]},data=Select[pp,Sum[Length[Complement[PointsToBeChecked[#[[ii;;ii+1]]],#[[1;;ii-1]]]],{ii,Length[#]-1}]==0&];Length[data]];
  3. CountOfPath[3,4]
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2013-6-15 17:39:01 | 显示全部楼层
作出了图形,可供参考: 红色的点表示组成一笔画的点,黑色的表示不组成 一笔画的点。 左下角是坐标 {0,0}点。 算出3*3的图案,5个点的一笔画 可行的方案和不可行的方案,例子如: 可行的锁屏图案: 3-5可行.png 不可行的锁屏图案: 3-5不可行.png
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2013-6-17 20:08:17 | 显示全部楼层
我正想提这个问题呢, 不想 wayne兄捷足先登, 并且算出来结果了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2013-6-17 21:25:58 | 显示全部楼层
7# 无心人 我目前的算法 很老土,算n*n图案,k点的一笔画路径,总共有P(n^2,k) = n^2*(n^2-1)*(n^2-2)*...*(n^2-k+1) 种可能, 需要一个一个的验证 大神可否改进一下
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2013-6-17 21:56:38 | 显示全部楼层
迭代之? 然后, 写个跳跃表,表示当前点可以走到的点的集合
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2013-6-17 22:11:31 | 显示全部楼层
假设以左上角标示为1,先行后列,依次递增,为 1,2,3,4,5,6,7,8,9 则 1的下1跳可能是 2,4,5,6,8 表示成 1=>1,4,5,6,8
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-12-23 19:05 , Processed in 0.027959 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表