文章目录

1. 题目

2. 解题

1. 题目

我们都知道安卓有个手势解锁的界面,是一个 3 x 3 的点所绘制出来的网格。

给你两个整数,分别为 ​​m 和 n,其中 1 ≤ m ≤ n ≤ 9,

那么请你统计一下有多少种解锁手势,是至少需要经过 m 个点,但是最多经过不超过 n 个点的。

先来了解下什么是一个有效的安卓解锁手势:

每一个解锁手势必须至少经过 m 个点、最多经过 n 个点。

解锁手势里不能设置经过重复的点。

假如手势中有两个点是顺序经过的,那么这两个点的手势轨迹之间是绝对不能跨过任何未被经过的点。

经过点的顺序不同则表示为不同的解锁手势。

解释:

| 1 | 2 | 3 |

| 4 | 5 | 6 |

| 7 | 8 | 9 |

无效手势:4 - 1 - 3 - 6

连接点 1 和点 3 时经过了未被连接过的 2 号点。

无效手势:4 - 1 - 9 - 2

连接点 1 和点 9 时经过了未被连接过的 5 号点。

有效手势:2 - 4 - 1 - 3 - 6

连接点 1 和点 3 是有效的,因为虽然它经过了点 2 ,但是点 2 在该手势中之前已经被连过了。

有效手势:6 - 5 - 4 - 1 - 9 - 2

连接点 1 和点 9 是有效的,因为虽然它经过了按键 5 ,但是点 5 在该手势中之前已经被连过了。

示例:

输入: m = 1,n = 1

输出: 9

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/android-unlock-patterns

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

参考官方题解,判断是否有效比较难写

class Solution {

vector visited;

public:

int numberOfPatterns(int m, int n) {

int ans = 0;

for(int len = m; len <= n; ++len)

{

visited = vector (9, false);

ans += cal(-1,len);

}

return ans;

}

bool isok(int idx, int last)

{

if(visited[idx]) return false;

if(last == -1) return true;//第一个数

if((idx+last)%2 == 1) return true;//相邻的两个数

int mid = (idx+last)/2;

if(mid == 4)//对角线的两个端点要连起来

return visited[mid];//看中点是否占用

if(idx%3 != last%3 && idx/3 != last/3)

return true;//不是 同行,或者 同列 的两个端点

return visited[mid];//检查0,6,中间是3,有没有被占用

}

int cal(int last, int len)

{

if(len == 0) return 1;

int sum = 0;

for(int i = 0; i < 9; ++i)

{

if(isok(i, last))

{

visited[i] = true;

sum += cal(i, len-1);

visited[i] = false;

}

}

return sum;

}

};

296 ms 6.1 MB

1,9, 389497

5,9, 387488, 有38万多种手势。

我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

android手势密码csdn,LeetCode 351. 安卓系统手势解锁(回溯)相关推荐

  1. LeetCode 351. 安卓系统手势解锁(回溯)

    文章目录 1. 题目 2. 解题 1. 题目 我们都知道安卓有个手势解锁的界面,是一个 3 x 3 的点所绘制出来的网格. 给你两个整数,分别为 ​​m 和 n,其中 1 ≤ m ≤ n ≤ 9, 那 ...

  2. 351. 安卓系统手势解锁

    我们都知道安卓有个手势解锁的界面,是一个 3 x 3 的点所绘制出来的网格. 给你两个整数,分别为 ​​m 和 n,其中 1 ≤ m ≤ n ≤ 9,那么请你统计一下有多少种解锁手势,是至少需要经过  ...

  3. Leetcode——安卓系统手势解锁(九宫格)

    1. 安卓系统手势解锁 (1)回溯(模版方法) // 至少 需要经过 m 个点,但是 不超过 n 个点的.class Solution {int count = 0;public int number ...

  4. android如果跳过锁屏,安卓系统再曝漏洞:任何人都可轻松绕过锁屏密码

    IT之家讯  9月16日消息 安卓最近频曝安全漏洞,不过大部分漏洞都比较隐晦,而且这些安全隐患需要入侵者具有足够的技术水平才能被利用,所以用户大面积中招的可能性不大.然而今天来自美国德克萨斯州一所大学 ...

  5. android手势密码csdn,Android手势密码LockPatternView、LockPasswordUtils、LockPatternUtils等分析...

    Android手势密码LockPatternView.LockPasswordUtils.LockPatternUtils 在使用别人写的这个手势密码的时候,我们通常是有自己的需求,可能这里的代码很多 ...

  6. 云技术在android平台上的应用程序,安卓系统上的ERP云应用

    一.安卓系统介绍 Android手机通常在底部会有最多4个功能键: 返回键:返回前一操作屏幕: 菜单键:弹出当前屏幕相关选项菜单: 主屏键:回到待机主屏幕: 搜索键:进行搜索. 现在的触摸屏一般都是电 ...

  7. win10手机系统 Android,Win10 Mobile内置完整安卓系统

    原标题:Win10 Mobile内置完整安卓系统 前瞻科技快讯,微软将以何种方式完成移动平台通用程序以及对 iOS 和安卓应用的移植与兼容成为外界关注的焦点,近日有开发者在对最新镜像 Win 10 M ...

  8. android蓝牙键盘编辑,使用很麻烦 安卓系统蓝牙键盘使用技巧

    [IT168 技术]安卓系统在蓝牙键盘支持方面就真是惨不忍睹了,因为很多原生安卓rom并没有集成HID蓝牙设备,对蓝牙键盘这类产品支持上存在不少缺陷.也导致目前市面上大多数的平板或者手机键盘只能服务苹 ...

  9. Android的折叠华为,微软发布安卓系统折叠手机,难超华为

    睿财经讯(文/萧玮)10月3日,在刚刚结束的微软秋季发布会中展示了Surface产品,同时也推出了首款双屏电脑Surface Neo以及折叠屏手机Surface Duo. 安卓化的微软手机 微软秋季发 ...

  10. ios为什么比android快,苹果ios更新比安卓系统快的原因是什么?

    标签:苹果手机(772)安卓(174)iOS(484)苹果(2818) 一言概之,苹果闭环,安卓开源. 对于手机系统来说,主流的基本上就只有Android和ios.虽然二者在系统体验上越来越趋于一致, ...

最新文章

  1. 使用navicat 11 出现不能返回存储过程结果的问题
  2. php框架所用到的核心概念,【PHP】PHP现代框架代表-Laravel框架核心技术特性
  3. Java 8 stream forEach filter anyMatch
  4. Jquery操作复选框总结
  5. mysql 导出dmp文件_一文带你了解MySQL主从复制(Master-Slave)
  6. 南通大学计算机组成原理期末考试题,南通大学计算机组成原理期末考试范围.docx...
  7. 玩转Go语言之数据类型转换
  8. Sql Server 的sa用户被禁用
  9. gradle安装及idea导入spring5.0x的源码
  10. wk一sm5时间温度控制器_吓人!用“御寒神器”取暖,竟上了手术台……注意!温度不高也会烫伤...
  11. 计算机在中医临床学的应用,中医临床学术论文(2)
  12. WPS如何去除分割线
  13. IPV6地址数据库导出
  14. GSoC 2022 Blender VSE: 第二、三周总结
  15. python3+selenium爬取笔记本电脑详情信息
  16. 企业邮箱“成员收发权限”功能详解【如何开通企业邮箱】
  17. 【飞郁2022新课程】23 - CE找偏移表达式
  18. 微信小程序开发拼图小游戏
  19. 遥感理论基础——电磁波(一)
  20. Docker镜像与容器的工作原理

热门文章

  1. 计算机专业认识实习目的,计算机专业实习目的与意义
  2. 聪明女婿VS刁蛮丈母娘之三十六计【转载】
  3. Windows2012安装AppFabric失败返回1603错误的解决方案
  4. Python 解析风云四A卫星L1级别数据以及绘制卫星云图
  5. 台式计算机网卡驱动不能正常使用,电脑网卡驱动程序不正常怎么办 网卡驱动程序不正常解决方法...
  6. delphi教程 | 第一个程序
  7. linux下运行vasp,VASP5.3.5 并行版本+VTST从头编译教程(完整版)
  8. swf转换为GIF格式
  9. 车票预订系统 搭建服务器,火车票网上订票系统的设计与实现.doc
  10. 超好用的网页浮动广告代码