时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld

题目描述
栗主席(lizi)是某xxxx大学的一个不得了的程序猿,然而没想到吧,他竟然有女盆友,我们假设为QAQ!!!
那天,QAQ问栗子:你的小米5s的图像解锁密码到底是多少?
栗子:嘛?我仔细想想…
QAQ:你仿佛在逗我…

栗子:我的图像解锁用过好多次密码,后来都是用指纹解锁,所以忘记密码辣。但是我记得可能是那几个密码
QAQ:那你务必告诉我…
栗子: …

然后,栗子就写下了一堆可能的密码,安卓图案解锁中,数字对应的位置已经标出。
但是栗子当然不想把真正的密码告诉QAQ,所以给QAQ的一系列的密码中,甚至有一些密码,是不符合安卓图案解锁的规则的。
QAQ也知道栗子肯定不老实,给了很多错的密码,甚至不符合规则的密码,所以想请你来找出,哪些密码是不符合规则的。

安卓图案解锁的密码有这样的一些特点:
1.每个数字最多只会被使用一次。
2.如果想直接连接两个数字,但是线段中会经过另一个数字,当且仅有那个数字已经在之前就被使用过了,才会合法。(比如你想从1直接连接到9,那么要么是1->3->9,要么是3在之前已经被使用过了,然后才能直接从1->9)

输入描述:
多组输入
每组输入占一行,包含一串数字(1~9),长度不超过30

输出描述:
输出这个安卓图案解锁是否合法,如果合法输出"YES",反之输出"NO" (请参照样例输出,不要输出引号)

示例1
输入
14569
1953
15963
15953

输出
YES
NO
YES
NO

分析:利用枚举法判断两次数字之间的操作是否合理即可

#include<stdio.h>
#include<string.h>
int  num[10];//存按钮状态
char str[10005];//存操作字符
int   t[10005];
int step(int x,int y)//判断操作是否合理,不合理返回1
{if(x==1&&y==3&&num[2]==0)return 1;else if(x==1&&y==9&&num[5]==0)return 1;else if(x==1&&y==7&&num[4]==0)return 1;else if(x==3&&y==7&&num[5]==0)return 1;else if(x==3&&y==9&&num[6]==0)return 1;else if(x==7&&y==9&&num[8]==0)return 1;else if(x==4&&y==6&&num[5]==0)return 1;else if(x==2&&y==8&&num[5]==0)return 1;else return 0;}
int main()
{int i;while(~scanf("%s",str)){int flag=0;for(i=1;i<10;i++)num[i]=0;//定义按钮初始状态int len=strlen(str);for(i=0;i<len;i++){t[i]=str[i]-'0';str[i]=0;}for(i=0;i<len;i++)//进行len次操作{if(i==0)//第一个点{num[t[i]]=1;continue;}if(num[t[i]]==1)//判断这个点有没有操作过{flag=1;break;}if( step(t[i],t[i-1]) ||step(t[i-1],t[i])){flag=1;break;}num[t[i]]=1;}if(flag==1)printf("NO\n");elseprintf("YES\n");}return 0;}

安卓图案解锁NC13585相关推荐

  1. 刷题记录:牛客NC13585安卓图案解锁

    传送门:牛客 栗主席(lizi)是某xxxx大学的一个不得了的程序猿,然而没想到吧,他竟然有女盆友,我们假设为QAQ!!! 那天,QAQ问栗子:你的小米5s的图像解锁密码到底是多少? 栗子:嘛?我仔细 ...

  2. 长沙理工大学第十二届ACM大赛-重现赛C 安卓图案解锁 (模拟)

    链接:https://ac.nowcoder.com/acm/contest/1/C 来源:牛客网 安卓图案解锁 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语 ...

  3. 牛客每日练习----合并回文串,年轮广场,安卓图案解锁

    大提琴的声音就像一条河,左岸是我无法忘却的回忆,右岸是我值得紧握的璀璨年华,中间流淌的,是我年年岁岁淡淡的感伤. 链接:https://ac.nowcoder.com/acm/problem/1323 ...

  4. 编程题:安卓图案解锁

    题目连接:牛客网 题目的意思是这样的:给定一个安卓开锁的序列,确定给出的序列是否是合法的解锁序列. 解锁的规则限制: 1.每个数字最多只会被使用一次. 2.如果想直接连接两个数字,但是线段中会经过另一 ...

  5. 【枚举】安卓图案解锁题解

    链接:https://ac.nowcoder.com/acm/problem/13585 来源:牛客网 解题思路: 1.利用集合来检测是否有重复的按键 2.在遇到1,3,7,9,2,4,6,8都检测一 ...

  6. [源码]Android安卓应用手势锁图案解锁的实现

    交互细节 用户首先使用账号/密码进行登录. 登录成功后,判断是否是第一次登录使用,如果是第一次则显示创建手势密码的界面,要求用户创建手势锁. 创建的过程中要求用户连接至少四个点,并且绘制两次以确认绘制 ...

  7. 安卓中图案解锁的实现原理和实现过程

    由上图,可以看出,图案中手势的记录是1-9或0-8的,保存的顺序就是密码,当然有些是可以重复的,为了安全,肯定不能直接存原顺序,一定是要加密处理的,如MD5或Hash散列. (作者: a day a ...

  8. [亲测有效] 如何实现vivo图案解锁

    vivo是最受欢迎的智能手机品牌之一,拥有庞大的客户群.但是在使用vivo手机的过程中,难免会出现意外.其中最常见的是忘记密码.那么,如果您忘记了密码,如何解锁 vivo 手机呢?这是您需要知道的一切 ...

  9. 破解安卓图案锁屏密码

    破解安卓图案锁屏密码 安卓的图案解锁由九个点构成,按顺序为0x00-0x08(十六进制)排列如下: 00       01       02 03       04       05 06       ...

最新文章

  1. 一次 Jar 包升级引发的血案 amp; 解决
  2. Java开发学习--MongoDB
  3. verilog中b',d',h'的意思
  4. python将字符串写入csv_用Python将字符串值写入CSV文件
  5. 计算机硬件结构控制信息,计算机硬件的基本结构
  6. 湖南工业大学在线计算机作业答案,湖南工业大学《计算机组成原理》试题集,共7份,有部分答案...
  7. ★LeetCode(196)——删除重复的电子邮箱(MySQL)
  8. 真正的创业者和伪创业者的区别在哪里?
  9. linux 嵌入式 快照_定制嵌入式 Linux 发行版
  10. window10 下面固定本地 ip
  11. 网络神采关键词过滤NET插件
  12. 木瓜移动跨境行业一周咨讯:字节跳动旗下Fanno欧洲上线、亚马逊中国黑五战绩优秀
  13. 学习笔记----网站的优化(五)---CDN加速
  14. 初学狄克斯特拉算法~(待提高)
  15. 鲜枣课堂-文章分类目录(2019.7.28更新)
  16. dhrystone测试结果_测试cpu的简单工具-dhrystone | 学步园
  17. 50天50个前端小项目(纯html+css+js)第十二天(FAQ 问题与回答框)
  18. 彻底解决Vsart无法拖拽问题!!!Win10无法拖拽问题
  19. tableau高级绘图(四)-tableau绘制蜡烛图
  20. 解决BUG:Incorrect string value: ‘\xAC\xED\x00\x05~r...‘ for column ‘XX‘ at row 1 Query

热门文章

  1. 网络管理员需了解的主要职责!
  2. 台达(Delta)PLC的PLC-LINK实现
  3. 【Python】Webpy 源码学习(转)
  4. 这些硬盘参数你都懂得吗?
  5. 警惕!黑客原来是这样远程攻击劫持安卓手机
  6. oracle版本和驱动ojdbc、jdk版本对应关系
  7. 搭建私服以及私服的使用
  8. 字谜分组_数组中的字谜分组
  9. 电脑上带有日历的桌面便签记事软件
  10. vue获取字符串中字符的的数量_结合Vue控制字符和字节的显示个数的示例