问题 F: 手机密码

时间限制: 1 Sec  内存限制: 128 MB
提交: 41  解决: 23
[提交] [状态] [讨论版] [命题人:admin]

题目描述

手机安全问题是大家经常关心的一个问题。
在生物解锁没有出现之前,人们通常有两种方式设置手机密码:九宫格密码和数字密码。
我们先来简化一下这两种密码的格式:
对于九宫格密码:
.至少连接4个以上不同的圆点。
.只能连接相邻(八方向)的圆点,且每个圆点只能通过一次。
.密码的长度定义为经过的圆点数。
对于数字密码:
.至少含有四个数字。
.密码长度定义为字符数。
现在,我们来尝试用枚举来破解这两种密码,当然我们可以提前获知一些消息:
.你可以通过观察对方解锁手机所用的时长,大致推断出对方的密码长度,
.在通常情况下,我们可以很轻松的得到密码第一位的信息,因为它最常被触碰比较油腻。而后,你来计算一下,对于这两种密码,最差我们需要枚举多少次,才能解开这组密码。 输入 出入包含四个整数n,a,x,y,
正整数n代表密码长度,
整数a代表数字密码的一位,
正整数(x,y),代表九宫格密码第一个经过的圆点的坐标
输入已EOF结束 输出 输出包含两个正整数,分别代表最差尝试几次可以破解九宫格密码,和数字密码 样例输入 样例输出 提示 九宫格密码的左上角坐标为(,)

思路:

有点长的题目,裸DFS,暴力一遍OK!

题解代码:

 #include<iostream>
#include<stdio.h>
#include<string.h>
#include<string>
#include<vector>
#include<algorithm>
#define ll long long
using namespace std;
#define N 10000
#define ll long long
int mp[][];//(1,1)--(3,3)
int ans1;
int dir[][]={ {,},{,},{,-},{-,},{,-},
{,},{-,},{-,-} };
int vis[][];
int n;
void dfs(int x,int y,int step){
if(step==n)
{
ans1++;return ;
}
for(int i=;i<=;i++){
int dx,dy;
dx=x+dir[i][];
dy=y+dir[i][];
if(dx>=&&dy>=&&dx<=&&dy<=&&!vis[dx][dy]){
vis[dx][dy]=;
dfs(dx,dy,step+);
vis[dx][dy]=;
}
} }
int main()
{
int beg,x,y;
while(scanf("%d%d%d%d",&n,&beg,&x,&y)!=EOF){
ans1=;
ll ans2=;
memset(vis,,sizeof(vis)); vis[x][y]=;
dfs(x,y,); for(int i=;i<=n;i++)
ans2*=; printf("%d %lld\n",ans1,ans2);
} return ;
}

题意不可怕,可怕的是盲目追榜单233~~

2018/7/31-zznu-oj-问题 F: 手机密码--【裸dfs+for循环即可!——据说三个小时内只有两个人读完了题意并轻松AC了】的更多相关文章

  1. 九度OJ 1079:手机键盘 (翻译)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2279 解决:1233 题目描述: 按照手机键盘输入字母的方式,计算所花费的时间 如:a,b,c都在"1"键上,输入a只 ...

  2. iOS 添加手机密码、指纹进行安全验证

    为APP添加安全验证 1.导入头文件 #import <LocalAuthentication/LocalAuthentication.h> 2.添加手机密码验证 //创建安全验证对象 L ...

  3. 洛谷 U6850 手机密码

    U6850 手机密码 题目背景 小明的手机上设了一个由四个数字组成的密码,但是小明自己的记性不好,但又不想把密码直接记在纸上,于是便想了一个方法. 题目描述 小明有四行数字,每行数字都有n[i](&l ...

  4. codeforces div2_603 F. Economic Difficulties(树dfs预处理+dp)

    题目连接:http://codeforces.com/contest/1263/problem/F 题意:有n个设备,上和下分别连接着一颗树,上下两棵树每棵树的叶子节点连接一个设备,两棵树的根节点都是 ...

  5. 2018/03/31 每日一个Linux命令 之 date

    date 命令主要用于查看和修改时间和时区 -- 这里主要学习基本的查看和设置时间和时区的方法. 直接显示日期 date '+%D' 效果 vagrant@hong:~$ date '+%D' 03/ ...

  6. 2018 Multi-University Training Contest 3 Problem F. Grab The Tree 【YY+BFS】

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6324 Problem F. Grab The Tree Time Limit: 2000/1000 MS ...

  7. 2018.12.31 bzoj4001: [TJOI2015]概率论(生成函数)

    传送门 生成函数好题. 题意简述:求nnn个点的树的叶子数期望值. 思路: 考虑fnf_nfn​表示nnn个节点的树的数量. 所以有递推式f0=1,fn=∑i=0n−1fifn−1−i(n>0) ...

  8. 2018.12.31 NOIP训练 偶数个5(简单数论)

    传送门 对于出题人zxyoizxyoizxyoi先%\%%为敬题目需要龟速乘差评. 题意简述:5e55e55e5组数据,给出n,请你求出所有n位数中有偶数个5的有多少,n≤1e18n\le1e18n≤ ...

  9. 2018.12.31 bzoj3771: Triple(生成函数+fft+容斥原理)

    传送门 生成函数经典题. 题意简述:给出nnn个数,可以从中选1/2/31/2/31/2/3个,问所有可能的和对应的方案数. 思路: 令A(x),B(x),C(x)A(x),B(x),C(x)A(x) ...

随机推荐

  1. 【转载】利用Amazon ECR和ECS部署容器应用

    众所周知现在容器的技术越来越火,很多企业已经将整个业务架构容器化,利用容器的灵活性.可移植性.轻量等优势为企业开发和运维带来很大的优势,目前整个容器编排服务中最吃香的当然是Kubernetes (简称 ...

  2. Linux内核编译、安装流程

    原文链接:https://blog.csdn.net/qq_28437139/article/details/83692907 此处只讲linux内核编译步骤至于安装虚拟机,安装ubuntu操作系统请 ...

  3. 提车应该检查哪?4S店都怕你检查这4个“雷区”,别等后悔才知道

    https://mbd.baidu.com/newspage/data/landingsuper?context=%7B%22nid%22%3A%22news_9381645601643691163% ...

  4. 推荐:【视频教程】ASP.NET Core 3.0 入门

    墙裂推荐了,免费,通俗易懂,唯一可惜的就是不是我录的,更可惜的是人家录制完了快半年了我还没看完... 版权归原作者所有,建议新手还是边看边实践吧,要不然过完一遍发现自己啥也没学会,不要眼高手低 [视频 ...

  5. windows自动化测试 (python)

    装插件 pywinauto 命令 pip install --upgrade pywinauto   最简单的一个例子,中文环境下   from pywinauto.application impor ...

  6. 面试经典算法:快速排序Golang实现

    Golang快速排序 定义 快速排序由C. A. R. Hoare在1962年提出.快速排序是对冒泡排序的一种改进,采用了一种分治的策略. 基本思想 通过一趟排序将要排序的数据分割成独立的两部分,其中 ...

  7. 加密算法 MD5 和 SHA 的 JAVA 实现

    首先先简单的介绍一下MD5 和 SHA 算法 然后看一下在  java.security.MessageDigest   (信息摘要包下) 如何分别实现  md5 加密 和 sha 加密 最后在看一下 ...

  8. Creating a ModelForm without either the 'fields' attribute or the 'exclude' attribute is prohibited; form ResumeForm needs updating.

    django 报错 django.core.exceptions.ImproperlyConfigured: Creating a ModelForm without either the 'fiel ...

  9. java集合的作用

    从架构的方面来理解,可能稍微容易一点.在编程中,需要管理很多对象集.比如某班全部同学,某个公司所有人员资料等.要管理这些资料,java必须提供某种数据结构支持.由于时间,空间,安全的考虑,有各种不同的 ...

  10. 正则限制input负数输入

    //直接在input标签内加入下面两个事件处理程序即可 onkeyup="this.value=this.value.replace(/\D|^0/g,'')" onafterpa ...