描述

滑动解锁是智能手机一项常用的功能。你需要在3x3的点阵上,从任意一个点开始,反复移动到一个尚未经过的"相邻"的点。这些划过的点所组成的有向折线,如果与预设的折线在图案、方向上都一致,那么手机将解锁。两个点相邻当且仅当以这两个点为端点的线段上不存在尚未经过的点。此外,这条折线还需要至少经过4个点。

为了描述方便,我们给这9个点从上到下、从左到右依次编号1-9。那么1->2->3是不合法的,因为长度不足。1->3->2->4也是合不法的,因为1->3穿过了尚未经过的点2。2->4->1->3->6是合法的,因为1->3时点2已经被划过了。

作为一个爱逛知乎的好少年,小Hi已经知道一共有389112种不同的解锁方案。不过小Hi不满足于此,他希望知道,当已经瞥视到一部分折线的情况下,有多少种不同的方案。

遗憾的是,小Hi看到的部分折线既不一定是连续的,也不知道方向。例如看到1-2-3和4-5-6,那么1->2->3->4->5->6,1->2->3->6->5->4, 3->2->1->6->5->4->8->9等都是合法的方案。

输入

第一行包含一个整数T(1 <= T <= 10),代表测试数据组数。

每个测试数据第一行是一个整数N(0 <= N <= 8),代表小Hi看到的折线段数目。

以下N行每行包含两个整数X, Y (1 <= X, Y <= 9),代表小Hi看到点X和点Y是直接相连的。

输出

对于每组数据输出合法的方案数目。

样例输入

3

0

8

1 2

2 3

3 4

4 5

5 6

6 7

7 8

8 9

4

2 4

2 5

8 5

8 6

样例输出

389112

2

258

方法是利用深度优先搜索尝试所有可能,并累计符合的方案数,感觉效率很低啊,难道题目就是这样的意图?

#include

#include

#include

using namespace std;

int test[][],vis[],depth,aim_depth,n,res,es[][];

int valid(int x,int y)

{

if((test[x][y]||test[y][x])&&!vis[(x+y)/])

{

return ;

}

return ;

}

void dfs(int x,int depth,int e)

{

vis[x]=;

if(depth==aim_depth&&e==n)

{

++res;

return;

}

for(int i=;i

{

if(!vis[i])

{

if(!valid(x,i))

{

continue;

}

if(es[x][i])

{

dfs(i,depth+,e+);

}

else

{

dfs(i,depth+,e);

}

vis[i]=;

}

}

}

int main()

{

memset(test,,sizeof(test));

test[][]=test[][]=test[][]=test[][]=;

test[][]=test[][]=test[][]=test[][]=;

test[][]=test[][]=test[][]=test[][]=;

test[][]=test[][]=test[][]=test[][]=;

int k,m,i,j;

scanf("%d",&k);

for(i=;i<=k;i++)

{

res=;

memset(vis,,sizeof(vis));

memset(es,,sizeof(es));

cin>>n;

if(n==)

{

cout<<<

continue;

}

for(j=;j

{

int a,b;

cin>>a>>b;

es[a][b]=es[b][a]=;

}

aim_depth=max(,n+);

for(;aim_depth

{

for(j=;j

{

dfs(j,,);

vis[j]=;

}

}

cout<

}

return ;

}

hihocoder 1054 滑动解锁 dfs

详细分析见滑动解锁分析 AC代码 #include #include #include #include &lt ...

hihoCoder&num;1054 滑动解锁

原题地址 回溯搜索 对于每个待枚举的点,检查: 1. 度数检查:是否违反了出度入度限制.因为生成的路径除了首尾节点外,其他节点的出度和入度只能为2 2. 共线检查:是否违反了共线条件.即跨越了尚未枚举 ...

hiho&lowbar;1054&lowbar;滑动解锁

题目大意 智能手机九点屏幕滑动解锁,如果给出某些连接线段,求出经过所有给出线段的合法的滑动解锁手势的总数.题目链接: 滑动解锁 题目分析 首先,尝试求解没有给定线段情况下,所有合法的路径的总数.可以使 ...

C语言 &&num;183&semi; 滑动解锁

题目:滑动解锁 滑动解锁是智能手机一项常用的功能.你需要在3x3的点阵上,从任意一个点开始,反复移动到一个尚未经过的"相邻"的点.这些划过的点所组成的有向折线,如果与预设的折线在图 ...

深度优先搜索&lpar;DFS&rpar;

[算法入门] 郭志伟@SYSU:raphealguo(at)qq.com 2012/05/12 1.前言 深度优先搜索(缩写DFS)有点类似广度优先搜索,也是对一个连通图进行遍历的算法.它的思想是从一 ...

初涉深度优先搜索--Java学习笔记(二)

版权声明: 本文由Faye_Zuo发布于http://www.cnblogs.com/zuofeiyi/, 本文可以被全部的转载或者部分使用,但请注明出处. 上周学习了数组和链表,有点基础了解以后,这 ...

挑战程序2&period;1&period;4 穷竭搜索&gt&semi;&gt&semi;深度优先搜索

深度优先搜索DFS,从最开始状态出发,遍历一种状态到底,再回溯搜索第二种. 题目:POJ2386  思路:(⊙v⊙)嗯  和例题同理啊,从@开始,搜索到所有可以走到的地方,把那里改为一个值(@或者 ...

回溯 DFS 深度优先搜索&lbrack;待更新&rsqb;

首先申明,本文根据微博博友 @JC向北 微博日志 整理得到,本文在这转载已经受作者授权!   1.概念   回溯算法 就是 如果这个节点不满足条件 (比如说已经被访问过了),就回到上一个节点尝试别 ...

总结A&ast;,Dijkstra,广度优先搜索,深度优先搜索的复杂度比较

广度优先搜索(BFS) 1.将头结点放入队列Q中 2.while Q!=空 u出队 遍历u的邻接表中的每个节点v 将v插入队列中 当使用无向图的邻接表时,复杂度为O(V^2) 当使用有向图的邻接表时, ...

随机推荐

抽象和封装&lowbar;JAVA&lowbar;OOP

很久没做笔记了,没有以前的刚开始学习软件时候的热情了.包括几年前U盘损坏,数据丢失,通过数据恢复,也只是找回一些零星的碎片. 现在就抽时间把以前的技术笔记找回来,这十条记录在电脑上显示的最后修改日期为 ...

C&num; 如何捕获键盘按钮和组合键以及KeyPress&sol;KeyDown事件之间的区别 (附KeyChar&sol;KeyCode值)

1. 首先将窗口属性KeyPreview设为true,如果属性对话框中找不到,就直接在代码里添加: 2. 添加KeyPress / KeyDown事件: 1.KeyPress 和KeyDown .Ke ...

一种M2M业务的架构及实现M2M业务的方法

http://www.cnblogs.com/coryxie/p/3849764.html 技术领域 [0001] 本发明涉及通信技术领域,尤其涉及一种M2M业务的架构及实现M2M业务的方法. 背景技 ...

hdu 1542 扫描线求矩形面积的并

很久没做线段树了 求矩形面积的并分析:1.矩形比较多,坐标也很大,所以横坐标需要离散化(纵坐标不需要),熟悉离散化后这个步骤不难,所以这里不详细讲解了,不明白的还请百度2.重点:扫描线法:假想有一条扫 ...

dtd语法之定义元素

1.语法: 使用规则: l (#PCDATA) :表示内容为普通文本数据 l EMPTY :表示元素内容必须为空 l ANY :元素出现任意次,一般用 ...

&period;net 调用webservice 总结

最近做一个项目,由于是在别人框架里开发app,导致了很多限制,其中一个就是不能直接引用webservice . 我们都知道,调用webserivice 最简单的方法就是在 "引用" ...

CSRF攻击&lbrack;转&rsqb;

一.CSRF是什么? CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSR ...

vc6&period;0调试

调试快捷键 : 逐过程调试-F10        逐语句调试-F11跳到光标处-Ctrl+F10   跳出本循环-Shift+F11   设定断点-F9    删除所有断点-Ctrl+Shift+F9 ...

React Native学习(九)—— 使用Flexbox布局

本文基于React Native 0.52 Demo上传到Git了,有需要可以看看,写了新内容会上传的.Git地址 https://github.com/gingerJY/React-Native-D ...

c语言中穷竭算法,hihocoder#1054 : 滑动解锁(深度优先搜索)相关推荐

  1. hihocoder#1054 : 滑动解锁(深度优先搜索)

    描述 滑动解锁是智能手机一项常用的功能.你需要在3x3的点阵上,从任意一个点开始,反复移动到一个尚未经过的"相邻"的点.这些划过的点所组成的有向折线,如果与预设的折线在图案.方向上 ...

  2. LeetCode算法总结-回溯法与深度优先搜索

    转载自  LeetCode算法总结-回溯法与深度优先搜索 回溯法(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标.但当探索到某一步时,发现原先选择并不优或达不到目标,就退 ...

  3. 【算法】蓝桥杯dfs深度优先搜索之排列组合总结

    [导航] 上一篇文章 → <[算法]蓝桥杯dfs深度优先搜索之凑算式总结>   为了重申感谢之意,再次声明下文的大部分灵感均来自于[CSDN]梅森上校<JAVA版本:DFS算法题解两 ...

  4. hiho#1054 : 滑动解锁 (hiho模拟面试题2 - google在线技术笔试模拟)

    #1054 : 滑动解锁 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 滑动解锁是智能手机一项常用的功能.你需要在3x3的点阵上,从任意一个点开始,反复移动到一个尚未经过 ...

  5. 【算法】蓝桥杯dfs深度优先搜索之图连通总结

    前言 上两篇文章 → <[算法]蓝桥杯dfs深度优先搜索之排列组合总结>      → <[算法]蓝桥杯dfs深度优先搜索之凑算式总结>   为了重申感谢之意,第三次声明下文的 ...

  6. ACM算法笔记(十)深度优先搜索与宽度优先搜索

    深度优先搜索 事实上,深度优先搜索属于图算法的一种,英文缩写为DFS即Depth First Search.其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次. 下面 ...

  7. 中点画线完整算法c语言,中点画线算法

    在网上看中点画线算法,很多说法是中点画线类似于Breshehanm画线. 但是助教说的中点画线是寻找直线两端点的中点进行画点,然后分别递归左右半段直线. 当年不好好学习,递归掌握的不好,现在自己试了试 ...

  8. C语言中如何衡量算法的正确性,从C语言的角度重构数据结构系列(二)-如何衡量一个算法的优劣?...

    前言 在学习具体的数据结构和算法之前,每一位初学者都要掌握一个技能,即善于运用时间复杂度和空间复杂度来衡量一个算法的运行效率. 在这里给自己打个广告,需要的小伙伴请自行订阅. python快速学习实战 ...

  9. 在C语言中使用二分法算法思想解决猜商品价格问题

    电视抽奖活动中,根据主持人给出的提示(高了还是低了),观众在规定时间内猜中该商品价格即可获得该商品 所谓的二分查找法,其实是一种有序的查找方法,也称折半查找(Binary Search),如果是无序的 ...

最新文章

  1. 在 ASP.NET 中使用 HTTPHandler 实现 Front Controller
  2. 【知识星球】ElementAI提出超复杂多尺度细粒度图像分类Attention模型
  3. tf.placeholder在测试时带来的坑
  4. php 获取流文件大小,php获取文件大小详解
  5. 漫谈ElasticSearch关于ES性能调优几件必须知道的事(转)
  6. 计算机等级考试中的c语言程序
  7. [Java][Android][Process] 暴力的服务可以解决一切,暴力的方式执行命令行语句
  8. 从一条微博揭秘专黑大V名人的定向攻击
  9. JavaScript方形玻璃鱼缸重量及体积计算
  10. 计算机专业答辩开场白,毕业论文答辩开场白
  11. 二十岁、我的青春散场
  12. 试图加载格式不正确的程序 解决方法
  13. 如何用python画出自己喜欢的表情包
  14. 用C语言求一元二次方程的解
  15. 嗖的一下第二弹,这些好看的皮肤直接一键收下~~
  16. 论文查重软件查重时需要注意的问题有哪些?
  17. 鱼眼深度估计!环视近场感知系列之几何预测
  18. 数字信号处理实验线性卷积与循环卷积计算
  19. Appcan与后台数据交互,登录例子
  20. 哈佛商业评论: 从商战到反恐,如何建立指挥系统内外的“网络”

热门文章

  1. VForum 2008系列之三:分论坛视频-实现自动化的虚拟数据中心
  2. moss 2007 单点登录的配置
  3. 安装numpy,setuptools的时候,不能再注册表中识别出来python2.7
  4. 通讯实例 modbus_实例讲解PLC实现modbus通讯
  5. 第七次的服务端课程:hibernate,jpa,springdata
  6. 2020 操作系统第零天复习(知识点总结)
  7. golang类型断言及检测其是否断言成功
  8. 【工具收藏】golang 开发工具包,json、sql 转 struct
  9. Linkis1.0下载地址
  10. scala方法定义示例