解题思路:
这是大佬的思路:
这道题可能上来会想到搜格子,但搜格子意味着更高的复杂度以及判连通的需要,本题似乎搜索要切开的边更优。由题意,这一条切割线必定经过图的中心点,那么我们一旦确定了半条到达边界的分割线,就能根据这半条对称画出另外半条。而由于结果中心对称性,搜索出来的个数应该除以4得出最终结论。在搜索过程中需要注意的是,我们搜索出的半条分割线不能同时经过关于中心对称的两个点,所以在标记时,需要将对称的点也标上。”
  中心点是(3,3),从(3,3)出发,向右、向左、向上、向下,四个方向DFS即可。
  
思路转载地址:
https://blog.csdn.net/weixin_43914593/article/details/112257103

这个图能让大家更好的理解大佬的思路。

终止条件:

我们会发现,当这条线碰到边界的时候,就能构成一种情况,因此终止条件为:

if (x == 0 || y == 0 || x == 6 || y == 6)

注意:
这两行代码很关键!!!

st[3][3] = true;
cnt / 4

代码如下:

#include <iostream>
using namespace std;
const int N = 10;
bool st[N][N];
int cnt;int dx[] = {0, 0, 1, -1}, dy[] = {1, -1, 0, 0};void dfs(int x, int y) {if (x == 0 || y == 0 || x == 6 || y == 6) {cnt++;return ;}for (int i = 0; i < 4; i++) {int xx = x + dx[i], yy = y + dy[i];if (!st[xx][yy]) {st[xx][yy] = true;st[6 - xx][6 - yy] = true;//对称点也要标记哦dfs(xx, yy);st[xx][yy] = false;st[6 - xx][6 - yy] = false;}xx = xx - dx[i], yy = yy - dy[i];//可有可无,有更规范}
}int main() {st[3][3] = true;//这一步很关键!!!dfs(3, 3);cout << cnt / 4 << endl;//记得除以4哦!!!return 0;
}

[蓝桥杯2017初赛]方格分割-dfs+思维相关推荐

  1. [蓝桥杯2017初赛]算式900+dfs,next_permutation

    法一: 代码如下: #include <iostream> using namespace std; const int N = 15; bool st[N]; int a[N];void ...

  2. 蓝桥杯2017初赛:迷宫 (dfs搜索)

    [蓝桥杯2017初赛]迷宫 Description X星球的一处迷宫游乐场建在某个小山坡上.它是由10x10相互连通的小房间组成的. 房间的地板上写着一个很大的字母.我们假设玩家是面朝上坡的方向站立, ...

  3. [蓝桥杯2017初赛]跳蚱蜢-map标记+bfs+环形数组

    解题思路: 这题如果我们考虑蚱蜢跳,有很多蚱蜢,有很多情况,所以我们让空盘跳,这样就简化题目了,然后我们化圆为直,将题目的情况看成字符串012345678,最后要变成087654321,这样题目就变得 ...

  4. [蓝桥杯2016初赛]方格填数-next_permutation

    代码如下: #include <iostream> #include <algorithm> using namespace std;int main() {int a[10] ...

  5. 蓝桥杯2017初赛-迷宫-dfs

    题目描述 X星球的一处迷宫游乐场建在某个小山坡上.它是由10x10相互连通的小房间组成的. 房间的地板上写着一个很大的字母.我们假设玩家是面朝上坡的方向站立,则: L表示走到左边的房间,R表示走到右边 ...

  6. [蓝桥杯2017初赛]等差素数列-巧妙枚举(思维)

    题目描述 2,3,5,7,11,13,-是素数序列. 类似:7,37,67,97,127,157 这样全由素数组成的等差数列,叫等差素数数列. 上边的数列公差为30,长度为6. 2004年,格林与华人 ...

  7. 蓝桥杯2017初赛-9数算式-dfs

    题目描述 观察如下的算式:9213 x 85674 = 789314562 左边的乘数和被乘数正好用到了1~9的所有数字,每个1次. 而乘积恰好也是用到了1~9的所有数字,并且每个1次. 请你借助计算 ...

  8. [蓝桥杯2016初赛]剪邮票-dfs+next_permutation(好题)

    题目描述 如下图, 有12张连在一起的12生肖的邮票.现在你要从中剪下5张来,要求必须是连着的.(仅仅连接一个角不算相连) 比如,下面两张图中,粉红色所示部分就是合格的剪取. 请你计算,一共有多少种不 ...

  9. [蓝桥杯2016初赛]凑算式-dfs,next_permutation

    代码如下: #include <iostream> using namespace std; const int N = 15; bool st[N]; double a[N];int c ...

最新文章

  1. 【 MATLAB 】适合初学者的 chirp 理解与推导
  2. 16位流应用与代码统计器例题
  3. 图像超分辨率近两年几篇优秀论文及代码
  4. 在keil中使用头文件实现多文件编程
  5. 有效沟通bic法则_学好英语的18条黄金法则,强烈推荐给孩子看
  6. MYSQL--事务处理
  7. java值栈_Struts2学习笔记-Value Stack(值栈)和OGNL表达式
  8. 【Linux】linux下查看目录所在分区
  9. JavaWeb——mybatis模糊查询与主键返回
  10. 台州银行笔试考什么_台州银行笔试题型招聘考试真题考什么
  11. java,mysql,hadoop,cdh,hive,spark,ntp,zookeeper,kafka,storm,redis,flume,git 安装详解
  12. 2021年高压电工考试题及高压电工考试试卷
  13. PHP小白之路1--PHP之简易留言板设计
  14. 转自Alon's Blog
  15. fgui的ui管理框架_GitHub - zyswx/DCET: Unity3D客户端和.Net Core服务器双端框架,支持FGUI和双端行为树,支持代码全热更(包括FGUI和行为树)...
  16. QListWidget自定义item的两种方式(二)——使用QWidget作为item
  17. linux ipp,Get Started with Intel® Integrated Performance Primitives
  18. 51单片机延时程序的理解
  19. js控制的Flv视频播放器源码下载
  20. 不能打开淘宝单个商品页面

热门文章

  1. Git之checkout到别的分支提示Your local changes to the following files would be overwritten by checkout:
  2. 字符串之从规定的字符串中根据下标得到字符
  3. php一篇文零基础到制作在线图片编辑网站赚钱(gif压缩、九宫格裁剪、等比裁剪、大小变换)【php华为云实战】
  4. GFS(Genetic Fuzzy Systems)—— 基于专家先验规则库和遗传算法相结合的智能体决策算法
  5. 神奇的折纸艺术!无限翻转完全停不下来
  6. 如果这个世界都不按套路出牌将会变成怎么样。。。 | 今日最佳
  7. oracle创建public链接,如何在oracle直接使用地址来创建database link
  8. mysql集群从节点无法启动_一次galera cluster集群故障节点无法启动问题排查
  9. Java交流|面试最后一问:你有什么问题想问我吗?
  10. python中字典长度可变吗_python中列表长度可变吗