题目描述
Bob最新购入一款安卓手机,他发现安卓手机密码使用的是画线方式。
一共有9个点,我们按行列顺序依次为1~9。密码要求在点和点之间连线不能有还未曾经过的点。
比如说:从1出发,可以到2,4,5,6,7,8,但是不能到达3,7,9。
但是如果从2出发,先到1,这时因为2已经经过了,所以此时可以到达3。
现在给你一个密码,请问它是否符合密码的这个要求?输入
第一行是一个整数T(1≤T≤10000),表示样例的个数。
一个样例占一行,是一个最短为4位,最长9位,只含1-9的字符串,且1-9最多只有1个。输出
每个样例输出一行,如果合法输出“Yes”,否则输出“No”。
样例输入
3 16852 213 132样例输出
Yes Yes No
解题思路:用标记法 来解,最开始存个表,把两个 中间夹得有其他数的 数标记起来。 每次连线时查询即可。 其他的都很简单了,具体看代码。
AC代码:
#include <stdio.h>
#include <string.h>
bool flag;
int phone[10][10];
char password[10];
void setup()
{
phone[1][3] = phone[3][1] = 2; // 1 3 之间隔个 2
phone[4][6] = phone[6][4] = 5; // 4 6 之间隔个 5
phone[7][9] = phone[9][7] = 8; // ......
phone[1][7] = phone[7][1] = 4;
phone[2][8] = phone[8][2] = 5;
phone[3][9

本文介绍了解决安卓手机密码验证问题的算法,通过标记相邻数字并检查路径完整性。提供了一个C++代码示例。
最低0.47元/天 解锁文章
1111

被折叠的 条评论
为什么被折叠?



