1.题目描述:

6x6的方格,沿着格子的边线剪开成两部分。 要求这两部分的形状完全相同。

试计算: 包括这 3种分法在内,一共有多少种不同的分割方法。 注意:旋转对称的属于同一种分割法。

如下是一种分割方式:

2.思路分析: 

显然这道题是一个搜索问题,问题是我们如何来搜索?我们发现他是一个 6*6 的一个表格,并且他分割下来的两部分彼此相互对称,那我们就可以将每次搜索的点以及它的对称点都进行标记,!!注意 :很多人可能会犯一种错误,就是我那(3,3)这个格子去遍历了,但我们发现并不是这样,因为你无论找那个格子都不会让整个图中心对称,他实际对称的点是(3,3)这个点;

解决了这个问题我们来看一下怎样控制结束条件,不知道有没有小伙伴跟我一样,不就是控制结束条件吗?每次不都在对角点上结束吗?然后........

我们来看一下每种情况,看完你就会明白为什么不是这样。

这里蓝黄所走的线是其中的两种情况(画的有点丑别介意),显然只要我的x,y 任意一个走到边界都是一种情况。

至此所有的问题都已经解决,剩下的就是板子了。 (据说给别人点赞自己也会迎来好运哦)

3.代码如下: 

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int book[7][7];
int sum=0;
int to[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
void dfs(int x,int y)
{if(x==0||y==0||x==6||y==6){sum++;return;}for(int i=0;i<4;i++){int tx=x+to[i][0],ty=y+to[i][1];if(tx<0||ty<0||tx>6||ty>6||book[tx][ty]==1)continue;book[tx][ty]=1;book[6-tx][6-ty]=1;dfs(tx,ty);book[tx][ty]=0;book[6-tx][6-ty]=0;}
}
int main()
{book[3][3]=1;dfs(3,3);cout<<sum/4;return 0;
}

方格分割 (dfs+思维)相关推荐

  1. [蓝桥杯2017初赛]方格分割-dfs+思维

    解题思路: 这是大佬的思路: 这道题可能上来会想到搜格子,但搜格子意味着更高的复杂度以及判连通的需要,本题似乎搜索要切开的边更优.由题意,这一条切割线必定经过图的中心点,那么我们一旦确定了半条到达边界 ...

  2. dfs记忆化搜索(带限制的选择问题) 讲解:LeetCode打家劫舍||| / 蓝桥 地宫取宝/蓝桥 k进制数//剪格子//方格分割

    记忆化递归的必要性: 普通的递归可能会重复求解某一值,类似斐波那契数列.同样的子问题可能会被求解多次,这样就会很慢很慢很慢 解决方法:我们把历史求解(子问题)记录下来,如果下次需要求解子问题,那么直接 ...

  3. 2017蓝桥杯C++A:方格分割(DFS)

    四.题目:方格分割 6x6的方格,沿着格子的边线剪开成两部分. 要求这两部分的形状完全相同. 如图:p1.png, p2.png, p3.png 就是可行的分割法. 试计算: 包括这3种分法在内,一共 ...

  4. 方格分割 蓝桥杯心得

    标题:方格分割 6x6的方格,沿着格子的边线剪开成两部分. 要求这两部分的形状完全相同. 如图:p1.png, p2.png, p3.png 就是可行的分割法. 试计算: 包括这3种分法在内,一共有多 ...

  5. 第八届蓝桥杯第四题方格分割

    题目如下: 标题:方格分割 6x6的方格,沿着格子的边线剪开成两部分. 要求这两部分的形状完全相同. 如图:p1.png, p2.png, p3.png 就是可行的分割法. 试计算: 包括这3种分法在 ...

  6. 迷宫,方格分割(python)

    文章目录 迷宫 分析 代码(return 递归函数) 通过截图 代码(不return递归函数:定义全局变量) 通过截图(能得到正确答案) 手算 方格分割 分析 代码 通过截图 迷宫 X 星球的一处迷宫 ...

  7. 第八届蓝桥杯-第四题方格分割

    标题:方格分割 6x6的方格,沿着格子的边线剪开成两部分.  要求这两部分的形状完全相同. 如图:p1.png, p2.png, p3.png 就是可行的分割法. 试计算:  包括这3种分法在内,一共 ...

  8. 蓝桥杯第八届省赛JAVA真题----方格分割

    标题:方格分割 6x6的方格,沿着格子的边线剪开成两部分. 要求这两部分的形状完全相同. 如图:p1.png, p2.png, p3.png 就是可行的分割法. 试计算: 包括这3种分法在内,一共有多 ...

  9. Java实现第八届蓝桥杯方格分割

    方格分割 题目描述 6x6的方格,沿着格子的边线剪开成两部分. 要求这两部分的形状完全相同. 如图:p1.png, p2.png, p3.png 就是可行的分割法. 试计算: 包括这3种分法在内,一共 ...

  10. 25行代码AC_ 2017年C/C++ A组第四题 方格分割(dfs剪痕+解题报告)

    励志用少的代码做高效表达 问题描述: 6x6的方格,沿着格子的边线剪开成两部分. 要求这两部分的形状完全相同.   如图:p1.png, p2.png, p3.png 就是可行的分割法.   试计算: ...

最新文章

  1. python 二维list取列
  2. tensorflow随笔-读取图像文件数据(1)
  3. struts+hibernate+oracle+easyui实现lazyout组件的简单案例——OpSessionview实现
  4. JavaScript正在完善—解释
  5. 华为麦芒8首发开箱图赏:年轻潮流美学就看它
  6. PUSHA/POPA
  7. C++相对路径下新建文件夹
  8. Java中创建子类实例时会创建父类实例?
  9. 单片机歌曲代码大全_对于 51 单片机的四大误区!
  10. 非家用的监控摄像头都无复位功能
  11. 高洛峰细说php百度贴吧_高洛峰细说PHP视频教程推荐
  12. Linux版phpstudy搭建
  13. Python数据挖掘学习6卡方检验
  14. 一、科里奥利质量流量计
  15. python 使用cv2、io.BytesIO处理图片二进制数据
  16. Hadoop数据本地化
  17. 快递企业如何完成运单订阅消息的推送
  18. 删除姓名、年龄重复的记录——数据库
  19. 上海交通大学计算机学院导师介绍,上海交通大学计算机科学与工程系导师教师师资介绍简介-张同珍副教授...
  20. 查看Linux系统版本的命令总结

热门文章

  1. 帆软公式如何用数据库字段_高考数学必背100招:如何用构造法求数列通项公式?...
  2. 介数中心度与紧密中心度_将开发团队与技术紧密结合的6种方法
  3. SLAM【十】回环检测
  4. Java项目:医疗管理系统 (java+Springboot+Maven+Mybatis-plus+Vue+Mysql)
  5. 华为HCNA网络技术学习指南-读书笔记
  6. 开发系统所需的服务器,开发软件的服务器需要什么配置
  7. (转)sql server 排序规则
  8. Win10 关机显示程序没有响应
  9. MySQL_查询连续打卡天数
  10. python tkinter怎么读_Python初学 Tkinter