描述

滑动解锁是智能手机一项常用的功能。你需要在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是直接相连的。

输出

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

之前DFS总是在每个点处记录哪些点可以去和哪些点已经去过,但这题要反过来,记录哪些点不能去。

#include <iostream>
#include <cstring>
#include <vector>
using namespace std;
int cnt,aim_depth ;
int vis[10] ;
int record[10][10];
int map[10][10];
int total_edge ;void init()
{record[1][3] = record[3][1] = record[1][7] = record[7][1] = 1 ;record[1][9] = record[9][1] = record[3][7] = record[7][3] = 1 ;record[9][3] = record[3][9] = record[9][7] = record[7][9] = 1 ;record[2][8] = record[8][2] = record[4][6] = record[6][4] = 1 ;
}
void dfs(int num,int depth,int edge)
{//找到符合条件的案例是深度,其次我们找到的边要包括已看到的边 if(depth == aim_depth && edge == total_edge){cnt++;return;}for(int i = 1;i < 10;i++){if(!vis[i]){if(record[num][i] && !vis[(num + i)/2])continue;  //中间点划过,则不找 vis[i] = 1;if(map[num][i])   //看看是否是已存在的边 dfs(i , depth + 1 , edge + 1);elsedfs(i , depth + 1 , edge);vis[i] = 0;}}
}int main()
{int t,n,uu,vv ;cin >> t ;init();while(t--){cin >> n ;memset(vis , 0 , sizeof(vis));memset(map , 0 , sizeof(map));for(int i = 0;i < n;i++){cin >> uu >> vv ;map[uu][vv] = map[vv][uu] = 1;}cnt = 0 ;total_edge = n ;for(aim_depth = max(4,n+1);aim_depth <= 9;aim_depth++){for(int i = 1;i <= 9;i++){vis[i] = 1; dfs(i , 1 , 0);vis[i] = 0;} }cout << cnt << endl;}
}

View Code

转载于:https://www.cnblogs.com/vaecn/p/4809375.html

hihocoder 1054相关推荐

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

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

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

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

  3. 【八中测试】滑动解锁(HihoCoder - 1054)

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

  4. hihocoder#1054之滑动解锁

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

  5. taoqick 搜索自己CSDN博客

    L1 L2正则化和优化器的weight_decay参数 kaiming初始化的推导 Pytorch动态计算图 Pytorch自动微分机制 PyTorch中在反向传播前为什么要手动将梯度清零? 通俗讲解 ...

  6. 1054 : 滑动解锁 hihocoder 蓝桥2017模拟

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

  7. mysql 5.7 1054_MySQL5.7更改密码时出现ERROR 1054 (42S22)的解决方法

    MySQL5.7更改密码时出现ERROR 1054 (42S22)的解决方法 发布时间:2020-10-14 16:01:38 来源:脚本之家 阅读:81 作者:剑侠365 新安装的MySQL5.7, ...

  8. hihoCoder 网络流四·最小路径覆盖

    题面带解释 hihoCoder感觉很好. 网络流的精华就是建图 #include<cstdio> #include<iostream> #include<algorith ...

  9. hihoCoder #1142 : 三分求极值

    #1142 : 三分·三分求极值 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 这一次我们就简单一点了,题目在此: 在直角坐标系中有一条抛物线y=ax^2+bx+c和一 ...

最新文章

  1. 把一个dataset的表放在另一个dataset里面_使用中文维基百科语料库训练一个word2vec模型并使用说明...
  2. 为什么爬虫用python不用java_为什么常用Python,Java做爬虫,而不是C#C++等
  3. 基于nginx实现minio分布式集群访问的负载均衡配置示例
  4. 公交车座椅上有个洞,竟是为了…很多人都不知道
  5. cd返回上一 git_如何使用Git实现自动化部署你的项目
  6. Codefroces1077F2. Pictures with Kittens (hard version)
  7. TCP的流模式与UDP的报文模式对比
  8. 浅析Lock工具类LockSupport
  9. 小话设计模式四:策略模式
  10. 微服务升级优点_SpringCloud微服务架构升级总结
  11. Spring Boot/Cloud 背后豪华的研发团队
  12. onerror捕获异常
  13. Android腾讯微博开放平台入门(三)Oauth授权
  14. 简述cookie增删改查的函数封装
  15. 【X86】---关于Intel芯片架构的发展史
  16. 【Python教程】python语言风格
  17. php设计验证码图片,PHP图片验证码制作实现分享(全)
  18. 【多传感器融合定位】【从零开始做自动驾驶定位_任佬】【所学到的东西汇总】
  19. 【圣诞快乐】用 C 语言画出一棵带有装饰的简易圣诞树
  20. 华三模拟器HCL下载与安装教程

热门文章

  1. [vue][面试]谈一谈对vue组件化的理解?
  2. asp毕业设计——基于asp+access的教师档案管理系统设计与实现(毕业论文+程序源码)——教师档案管理系统
  3. Qt之QWidget设置窗口背景图片的几种方法
  4. 编写一个留言簿程序,写入留言提交后显示留言内容
  5. 我的世界服务器怎么修改id,我的世界服务器id大全 | 手游网游页游攻略大全
  6. GameFramework篇:StarForce资源热更新讲解(二:具体操作步骤)
  7. 手机PUK码和PIN码知识及其查询方式
  8. 【STM32H7】第13章 任务调度—抢占式,时间片和合作式
  9. 蜜友工作室来博客园开博了
  10. 8 款浏览器兼容性测试工具介绍,需要的赶紧收藏吧